Frage

Ich habe eine Datei, die ANSI codiert. Allerdings zeigt es arabische Buchstaben in seinem Inneren. Diese Textdatei durch ein Programm erzeugt wurde (ich habe keine Informationen über), aber es scheint, als ob es eine Art interner Codierung ist (wenn ich sagen könnte, und wenn es möglich ist) für die arabischen Buchstaben erscheinen zu lassen.

Gibt es so etwas? Wenn nicht, wie kann die ANSI-Datei, die die arabischen Buchstaben zeigen?

* Wenn möglich, erklärt in Java-Code


Ausgabe 01

Wenn ich es in Notepad öffnen ++ es zeigt, dass die Seitencodierung ANSI ist. Bitte überprüfen Sie dieses Foto:

http://www.4shared.com/file/221862075 /e8705951/text-Windows.html


Ausgabe 02

können Sie die Datei überprüfen, bei Temperaturen von:

http://www.4shared.com/file/221853641/3fa1af8c /data.html

War es hilfreich?

Lösung

Ich habe versucht, die Datei in Firefox und Opera zu öffnen. Ich hatte die Zeichencodierung auf Arabisch Windows 1256 zu setzen, um es richtig in beiden Browsern angezeigt zu bekommen, so Codierung der Datei ist sehr wahrscheinlich, dass zu sein.

Hinweis: Ich stellte ursprünglich dies als Kommentar, wurde aber gebeten, es eine Antwort zu machen.

Andere Tipps

Wie wissen Sie, dass es die ANSI codiert? Wenn es nicht eine Multi-Byte-Codierung wie UTF-8 ist, wäre meine Vermutung es codiert ist eine arabische Codepage wie diese verwendet: Windows 1256 .

Sie an der Datei in einem Hex-Editor aussehen könnten und finden Sie heraus, welche Zahlen die arabischen Zeichen lang sein und auf diese Weise versuchen, die Codierung / Codepage es um herauszufinden, wurde erstellt mit.

Kurze Antwort :. Wahrscheinlich Textdatei ist nicht "ANSI"-codierte, aber utf-8

Lange Antwort: :

Zunächst wird der Begriff „ANSI“ (unter Windows) bedeutet nicht, eine feste Codierung; seine Bedeutung hängt von Ihren Spracheinstellungen. Zum Beispiel in Westeuropa und den USA, wird es in der Regel von Windows-1252 (a sein Variante ISO / IEC 8859-1, die auch als Latin-1 ) bekannt ist, in Japan, es ist verschobene JIS , und in den arabischen Ländern, es ist ISO / IEC_8859-6

Wenn Sie eine nicht-arabische Version von Windows verwenden und heben Sie die Spracheinstellungen nicht verändert, und Sie können arabische Buchstaben in der Datei sehen, wenn Sie es in Editor öffnen, dann ist es sicherlich nicht in jedem dieser ANSI-Codierungen. Stattdessen ist es wahrscheinlich Unicode .

Beachten Sie, dass ich meine nicht "UNICODE", die in der Regel auf Windows bedeutet UTF-16LE . Es könnte sein, UTF-8 auch. Beide sind Codierungen, die alle 100.000+ Zeichen derzeit definiert in Unicode kodieren können, aber sie tun es auf unterschiedliche Weise. Beide sind variabler Länge Codierungen , was bedeutet, dass nicht alle Zeichen codiert werden, mit der gleichen Anzahl von Bits.

in UTF-8, wird jedes Zeichen als ein bis vier Bytes codiert. Die Kodierung ist so gewählt, daß ASCII-Zeichen in einem Byte kodiert werden.

In UTF-16, wird jedes Zeichen entweder als zwei vier Bytes codiert. Diese Codierung ist erfunden ursprünglich als Unicode weniger als 64 KB Zeichen hatte, und man könnte daher jedes Zeichen in einem einzigen 16-Bit-Wort codieren. Später, als es klar wurde, dass Unicode würde jenseits der Grenze von 64 KB wachsen haben, ein System erfunden wurde, wo Paare von Wörtern im Bereich 0xD800-0xDFFF verwendet werden Zeichen außerhalb des ersten 64K darzustellen (minus 0x800) Zeichen.

Um zu sehen, was in der Datei tatsächlich ist, öffnen Sie sich in einem Hex-Editor:

  • Wenn die ersten beiden Bytes FF FE sind, dann ist es wahrscheinlich, UTF-16LE (Little Endian)
  • Wenn die ersten beiden Bytes FE FF sind, dann ist es wahrscheinlich, UTF-16BE (Big-Endian, unwahrscheinlich, dass auf Windows)
  • Wenn die ersten drei Bytes EF BB BF sind, dann ist es wahrscheinlich, UTF-8
  • Wenn Sie eine Menge von 00 Bytes zu sehen, es ist wahrscheinlich, UTF-16 (oder UTF-32, wenn Sie sehen, Paare von 00 Bytes)
  • Wenn arabische Zeichen ein einzelnes Byte besetzen, ist es wahrscheinlich, ISO-8859-6 (z ش wäre D5).
  • Wenn arabische Zeichen mehr Bytes besetzen, ist es wahrscheinlich, UTF-8 (z ش wäre D8 B4).
  

Gibt es so etwas?

Nein.

  

Wenn nicht, wie kann die ANSI-Datei, die die arabischen Buchstaben zeigen?

Es ist keine Windows-ANSI-Datei kodiert. Wahrscheinlicher ist, verwendet es eine variabler Breite Codierung , höchstwahrscheinlich UTF-8: viele gemeinsame Zeichenpositionen in UTF-8 sind äquivalent zu ihren Positionen in US-ASCII (in der Tat ist es auf diese Weise gestaltet wurde), und auch durch Inferenz für Windows-ANSI.

Bearbeiten : Wir haben zu danken Microsoft für diese Verwirrung. „ANSI“ nicht gut angegeben, wenn es um Kodierungen kommt. Normalerweise ist es bedeutet, für die Windows-Standard-Codierung mit Codepage 1252 ( „Windows-1252“) steht, die „westliche“ Alphabete zu entsprechen geschieht abgeleitet aus dem Lateinischen.

Doch in anderen Ländern der Standard von Windows verwendet Codierung (in älteren Windows-Versionen ... heute ist die Standard-UTF-8) nicht von Windows-1252, sondern eine andere Codierung, die dann auch „ANSI“ bezeichnet. In diesem Fall Codepage 1256.

ANSI-Zeichencodierung ermöglicht 217 Zeichen und keine arabischen Buchstaben enthalten. Ich denke, vielleicht die Datei verwendet eine alternative Codierung.

Anwsering Ihre bearbeiten, scheint es, dass das Problem mit Notepad ++ ist, weil das, was angezeigt wird, deutlich über die Fähigkeiten des ANSI-Zeichensatz ist.

zuerst heruntergeladen i Dateien und versucht, vim zu nutzen, um ihre Codierung zu überprüfen und es schien nicht zu wissen, und auf einer zweiten Maschine sagte, es latin1, die ähnlich sein könnte, was im Notizblock passiert ++ (die allgemeine Antwort gegeben haben). < br> so i file data.txt tat und war der Ausgang dieses:

data.txt: ISO-8859 text, with CRLF line terminators

hoffe, das hilft.

Bearbeiten :
den Browser, was zeigte, dass diese Antwort ist falsch.

ISO-8859-4 und ISO-8859-13 konnten den Text anzuzeigen, ohne Fehler, aber die Zeichen, wo nicht auf Arabisch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top