2017-02-06 6 views
0

Ich versuche mein Unicode 32 Decoderprogramm zu testen, das ich in der Schule schreiben musste. Ich suche nach einer Lösung, die genau UTF 32 Bytes in eine Datei schreibt, damit ich versuchen kann, sie zu entschlüsseln.einen Wert in UTF kodieren 32

Ich habe versucht, einen Weg zu entwickeln, um es zu testen, ohne einen Unicode zu UTF32-Encoder programmieren zu müssen (was bedeutet, dass ich das dann auch testen müsste). Ich habe ein Programm namens "editpad" (https://www.editpadlite.com/) verwendet, das es mir erlaubte, in utf32 zu kodieren, mit dem ich dann mein Programm testen konnte.

Jedoch würde ich versuche U + 2A580 (Unicode-Codepunkt) kodiert, in diesem Programm, und dann mit dem Terminal-Befehl in Linux

od -tx1 file.txt 

es zu sehen, und würde das Ergebnis als siehe:

00 00 fe ff 00 00 d8 69 00 00 dd 80 

Welche mit Ausnahme der Stückliste ergab keinen Sinn für mich. Versteh ich UTF32 nur falsch? Oder gibt es einen Fehler .. Ich würde erwarten, dass der UTF32-Wert so etwas wie 02 a5 80

EDIT: mein Betriebssystem ist Linux, Fedora speziell. Fedora Veröffentlichung 24

+0

Können Sie Ihr Betriebssystem in die Frage bearbeiten? – Paulb

+0

Dies sollte ein Programmierproblem sein, wenn Sie nach Stack Overflow fragen, also ist der Code in Ihrem Programm, der die Konvertierung durchführt, relevant und wird dennoch weggelassen. – tadman

+0

@tadman dachte, es war Programmierung bezogen .. mein Code in diesem Fall, spielt keine Rolle, wie ich frage, wie kann ich es besser testen. –

Antwort

0

Sie sind richtig, dass Unicode-Codepoint U+2A580 als die folgende Bytesequenz in UTF-32BE codiert wird:

00 02 A5 80

Was Sie sehen tatsächlich geschehen wird der Codepunkt in UTF-16 codiert wird, Zuerst werden die beiden UTF-16-Ersatzcodeeinheiten (0xD869, 0xDD80) einzeln in UTF-32BE codiert.

Ein weiterer Hinweis, dass dies geschieht ist die erste Bytefolge:

00 00 FE FF

Während die die UTF-32BE BOM ist, ist es auch der UTF-16BE BOM in UTF-32BE codierte .

Also, entweder:

  • EditPad tut fälschlicherweise eine Doppel kodieren.
  • EditPad wird in UTF-16 gespeichert, obwohl Sie es in UTF-32 speichern, und dann zeigt Ihre od-Ausgabe den UTF-16-Eingang als UTF-32 falsch an.
Verwandte Themen