2 Stimmen

Wie man feststellt, ob der Stream ein Unicode hat

Ich habe eine Datei mit dem Namen "Connecticut is now 2 °C.txt", die ein Unicode enthält, aber die Dateiinhalte sind einfach normale Zeichen. Früher wurde der Code verwendet, um festzustellen, ob der Dateiname ein Unicode hat. Wenn ja, wurde der Dateikopf mit den Unicode-Details geschrieben. Diese Implementierungsmethode führt zu Konflikten in der Ausgabedatei. Kann jemand vorschlagen, wie man feststellen kann, ob der Dateistream einen Unicode enthält?

Vielen Dank im Voraus,

Lokesh.

2voto

David Heffernan Punkte 585606

Bei weitem die einfachste Strategie ist es, sich für eine bestimmte Datei auf eine Codierung zu einigen, z.B. UTF-8, und sie ausschließlich zu verwenden, sowohl beim Schreiben als auch beim Lesen. Der Versuch, herauszufinden, welche Codierung verwendet wird, ist definitiv fehleranfällig, daher ist es am besten, diese Erkennung zu vermeiden.


UPDATE

In den Kommentaren unten klären Sie, dass Sie in eine Datei schreiben möchten, die von jemand anderem mit einer unbekannten Codierung erstellt wurde.

In voller Allgemeinheit ist dies unmöglich mit 100% Zuverlässigkeit durchzuführen.

Wenn Sie Glück haben, können Sie feststellen, dass die Datei mit einem Byte Order Mark (BOM) versehen ist. In diesem Fall können Sie den BOM lesen und somit die Codierung ableiten. Es gibt keine Anforderung, dass eine Textdatei einen BOM enthalten muss und oft enthalten sie keinen.

Dennoch möchte ich Sie dringend bitten, sich mit demjenigen, der diese Dateien erstellt, auf ein Austauschformat zu einigen. Wählen Sie eine einzelne Codierung und verwenden Sie sie immer.

0voto

Anton Semenov Punkte 6127

Ich denke, dieser Link könnte hilfreich für dich sein. Achte auf die Funktion IsTextUnicode

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X