2017-11-24 7 views
0

Ich habe eine Datei, die, wenn ich in VI öffnen Editor wie unten angezeigt:Unix: Identifizieren charset von vi-Editor

12´<9d>00 
12b600 
12ɹ00 
12çâ00 
12Wj00 
12«À00 
12ùa00 
12={00 
12°l00 
12P¹00 
12Ë+00 
12^T^^ 
12±B00 
12zN00 
12<8e>·00 
12^T=00 
12E<8f>00 
12nß00 

die gleichen Daten in CAT oder Windows erscheint wie folgt:

12��00 
12b600 
12ɹ00 
12��00 
12Wj00 
12��00 
12�a00 
12={00 
12�l00 
12P�00 
12�+00 
1200 --> 4 char 
12�B00 
12zN00 
12��00 
12=00 --> 5 char 
12E�00 
12n�00 

Ich habe mit diesen Daten beim Lesen als UTF-8 in Windows/HDFS gekämpft, da es als 6 Zeichen oder 5 Zeichen oder 4 Zeichen liest. Wenn ich feststellen kann, wie der vi-Editor angezeigt wird, kann ich jede Zeile mit 6 Zeichen lesen. Wenn ich OD-C mache, wird es als 2 Zeichen + 2 Byte + 2 Zeichen angezeigt. Irgendeine Hilfe in diesem bitte.

+0

auf od -c Ich bekomme etwas wie folgt: 1 2 264 235 0 0 \ n 1 2 b 6 0 0 \ n 1 2 311 271 0 0 \ n 1 2 347 342 0 0 \ n 1 2 W j 0 0 \ n 1 2 253 300 0 0 \ n 1 2 371 a 0 0 – Aavik

Antwort

0

"vi" (ob es tatsächlich ist vi oder vim), kann nicht sagen. Im zweiten Teil der Frage sind die seltsam aussehenden Fragezeichen das Unicode Ersetzungszeichen, das darauf hinweist, dass Sie eine Nicht-UTF-8-Datei an ein Terminal senden, das UTF-8 verwendet.

Das könnte einer von mehreren 8-Bit-Zeichensätzen/Kodierungen sein (wie die ISO-8859- x-Serie, oder vielleicht keiner von denen). Da die Datei scheint nicht Text, sondern eher eine Art von Daten, der tatsächliche Zeichensatz kann nicht viel ausmachen.

Diese Zeile enthält ein 8F, die in den ISO-Zeichensätzen nicht druckbar ist, kann aber in dem IBM/Microsoft DOS-Codepages (die häufig verwendet werden oder nachgeahmt in Osteuropa und Russland) druckbar sein:

12E<8f>00 

Letztlich ist die Art und Weisen Sie den Zeichensatz bestimmen können, ist durch das wissen, was die Daten darstellen soll, und verschiedene Übersetzungen versuchen (iconv oder recode verwenden), bis ein brauchbares Ergebnis in UTF-8 zu sehen.