webentwicklung-frage-antwort-db.com.de

Wie korrigiere ich die Zeichenkodierung einer Datei?

Ich habe eine ANSI-codierte Textdatei, die nicht als ANSI codiert werden sollte, da es akzentuierte Zeichen gab, die von ANSI nicht unterstützt werden. Ich würde lieber mit UTF-8 arbeiten.

Können die Daten korrekt dekodiert werden oder gehen sie bei der Transkodierung verloren?

Welche Tools könnte ich verwenden?

Hier ist ein Beispiel von dem, was ich habe:

ç é

Ich kann aus dem Kontext (Café sollte ein Café sein) ablesen, dass dies diese beiden Zeichen sein sollten:

ç é
45
Liam

BEARBEITEN: Eine einfache Möglichkeit, die Sie beseitigen können, bevor Sie sich mit komplexeren Lösungen befassen: Haben Sie versucht, den Zeichensatz in dem Texteditor, in dem Sie die Datei lesen, auf utf8 zu setzen? Dies kann nur der Fall sein, dass Ihnen jemand eine utf8-Datei sendet, die Sie in einem Editor lesen, der cp1252 sagt.

Nimmt man nur die beiden Beispiele, so ist dies der Fall, dass utf8 durch die Linse einer Einzelbyte-Codierung gelesen wird, wahrscheinlich einer von iso-8859-1, iso-8859-15 oder cp1252. Wenn Sie Beispiele für andere Problemzeichen posten können, sollte es möglich sein, dies weiter einzugrenzen.

Da die visuelle Prüfung der Zeichen irreführend sein kann, müssen Sie auch die zugrunde liegenden Bytes prüfen: Der auf dem Bildschirm angezeigte § kann entweder 0xa7 oder 0xc2a7 sein, und dies bestimmt die Art der Zeichensatzkonvertierung, die Sie durchführen müssen.

Können Sie davon ausgehen, dass alle Ihre Daten auf genau die gleiche Weise verzerrt wurden - dass sie aus derselben Quelle stammen und dieselbe Transformationssequenz durchlaufen haben, sodass beispielsweise in Ihrem Text kein einziges é enthalten ist, sondern immer EIN§? In diesem Fall kann das Problem mit einer Folge von Zeichensatzkonvertierungen behoben werden. Wenn Sie die Umgebung und die Datenbank, die Sie verwenden, genauer kennen, kann Ihnen hier möglicherweise jemand sagen, wie die entsprechende Konvertierung durchgeführt werden soll.

Andernfalls, wenn die Problemzeichen nur an einigen Stellen in Ihren Daten vorkommen, müssen Sie sie Instanz für Instanz auf der Grundlage von Annahmen wie "Kein Autor beabsichtigt," in ihren Text einzufügen, also wann immer Sie dies sehen es durch ç "ersetzen. Die letztere Option ist riskanter, zum einen, weil diese Annahmen über die Absichten der Autoren falsch sein könnten, zum anderen, weil Sie jedes Problemzeichen selbst erkennen müssen, was möglicherweise unmöglich ist, wenn zu viel Text vorhanden ist, um ihn visuell zu untersuchen, oder wenn er geschrieben ist in einer Sprache oder einem Schriftsystem, das Ihnen fremd ist.

19
user8599

Befolgen Sie diese Schritte mit Notepad ++

1- Kopieren Sie den Originaltext

2- Öffnen Sie in Notepad ++ eine neue Datei, und ändern Sie die Codierung. Probieren Sie auch die Kodierung "ANSI" aus, da manchmal Unicode-Dateien von bestimmten Programmen als ANSI gelesen werden

3- Einfügen

4- Gehen Sie zum Konvertieren in Unicode erneut über dasselbe Menü: Codierung -> "In UTF-8 codieren" (nicht "In UTF-8 konvertieren") und hoffentlich wird es lesbar

Die obigen Schritte gelten für die meisten Sprachen. Sie müssen nur die ursprüngliche Codierung erraten, bevor Sie sie in Notepad ++ einfügen, und dann über dasselbe Menü in eine alternative Unicode-basierte Codierung konvertieren, um festzustellen, ob die Informationen lesbar werden.

Die meisten Sprachen gibt es in zwei Codierungsarten: 1- Die alte ANSI (ASCII) -Form (nur 8 Bit) wurde ursprünglich von den meisten Computern verwendet. 8 Bit erlaubten nur 256 Möglichkeiten, 128 davon, bei denen die regulären lateinischen und Steuerzeichen, die letzten 128 Bit je nach den PC-Spracheinstellungen unterschiedlich gelesen wurden in allen derzeit bekannten Sprachen und viel mehr zu kommen. Wenn es sich bei einer Datei um einen Unicode handelt, sollte dieser auf jedem PC verstanden werden, auf dem die Schriftart der Sprache installiert ist. Beachten Sie, dass auch UTF-8 bis zu 32 Bit groß und genauso breit ist wie UTF-16 und UTF-32. Es wird lediglich versucht, 8 Bit mit lateinischen Zeichen zu belassen, um Speicherplatz zu sparen

21
Gabriel

Wenn Sie Zeichenfolgen wie ç und à © sehen, ist dies normalerweise ein Hinweis darauf, dass eine UTF-8-Datei von einem Programm geöffnet wurde, das sie als ANSI (oder ähnlich) einliest. Unicode-Zeichen wie diese:

U + 00C2 Lateinischer Großbuchstabe A mit Zirkumflex
U + 00C3 Lateinischer Großbuchstabe A mit Tilde
U + 0082 Pause hier erlaubt
U + 0083 Keine Pause hier

aufgrund der Strategie mit variablen Bytes, die UTF-8 verwendet, wird sie häufig im ANSI-Text angezeigt. Diese Strategie ist sehr gut erklärt hier .

Der Vorteil für Sie ist, dass das Erscheinen dieser ungeraden Zeichen das Auffinden und Ersetzen von Instanzen falscher Konvertierung relativ einfach macht.

Ich glaube, da ANSI immer 1 Byte pro Zeichen verwendet, können Sie diese Situation mit einer einfachen Such- und Ersetzungsoperation behandeln. Oder bequemer mit einem Programm, das eine Tabellenzuordnung zwischen den beleidigenden Sequenzen und den gewünschten Zeichen enthält, wie diese:

â € ž -> "# sollte ein öffnendes doppeltes geschweiftes Anführungszeichen sein
â €? -> ”# sollte ein schließendes doppeltes geschweiftes Anführungszeichen sein

Jeder gegebene Text, vorausgesetzt er ist in englischer Sprache, wird eine relativ kleine Anzahl verschiedener Arten von Ersetzungen haben.

Hoffentlich hilft das.

8
gregory

Mit vim von der Kommandozeile:

vim -c "set encoding=utf8" -c "set fileencoding=utf8" -c "wq" filename
6
Zsolt Botykai
4
Troels Arvin

Im erhabenen Texteditor Datei -> erneut mit Codierung öffnen -> die richtige Codierung auswählen.

Im Allgemeinen wird die Codierung automatisch erkannt. Andernfalls können Sie die oben beschriebene Methode verwenden.

2
user3342981

Wenn Sie Fragezeichen in der Datei sehen oder die Akzente bereits verloren sind, hilft es Ihrer Sache nicht, zu utf8 zurückzukehren. z.B. Wenn aus Café ein Café wurde, hilft es nicht, die Kodierung zu ändern (und Sie benötigen Originaldaten).

Können Sie hier Text einfügen, der uns bei der Beantwortung helfen wird?.

1
Deepak Gulati

Und dann ist da noch das etwas ältere recode Programm.

0
unbeknown

Ich habe einen einfachen Weg gefunden, um Dateikodierungen automatisch zu erkennen - ändere die Datei in eine Textdatei (benenne die Dateierweiterung auf einem Mac in .txt um) und ziehe sie in ein Mozilla Firefox-Fenster (oder Datei -> Öffnen). Firefox erkennt die Kodierung - Sie können unter Ansicht -> Zeichenkodierung nachlesen, was dabei herausgekommen ist.

Ich habe die Codierung meiner Datei mit TextMate geändert, nachdem ich die richtige Codierung erkannt hatte. Datei -> Mit Codierung erneut öffnen und Codierung auswählen. Dann Datei -> Speichern unter und ändern Sie die Codierung in UTF-8 und die Zeilenenden in LF (oder was auch immer Sie wollen)

0
Mark Robinson

Unter OS X können Sie mit Synalyze It! Teile Ihrer Datei in verschiedenen Codierungen anzeigen (alle von ICU) unterstützt) = Bibliothek) .Wenn Sie die Quellcodierung kennen, können Sie die gesamte Datei (Bytes) über die Zwischenablage kopieren und in ein neues Dokument einfügen, in dem die Zielcodierung (UTF-8 oder was auch immer Sie möchten) ausgewählt ist.

Sehr hilfreich bei der Arbeit mit UTF-8 oder anderen Unicode-Darstellungen ist UnicodeChecker

0
pi3

Es gibt Programme, die versuchen, die Kodierung einer Datei wie chardet zu erkennen. Dann können Sie es mit iconv in eine andere Codierung konvertieren. Dies setzt jedoch voraus, dass der Originaltext noch intakt ist und keine Informationen verloren gehen (z. B. durch Entfernen von Akzenten oder ganzen Buchstaben mit Akzenten).

0
unbeknown

Ich habe diese Frage gefunden, als ich nach einer Lösung für ein Codepageproblem mit chinesischen Zeichen gesucht habe, aber am Ende war mein Problem nur ein Problem, bei dem Windows sie in der Benutzeroberfläche nicht richtig anzeigt.

Falls jemand dasselbe Problem hat, können Sie es einfach beheben, indem Sie das lokale in Windows in China und dann wieder zurück ändern.

Ich habe die Lösung hier gefunden:

http://answers.Microsoft.com/en-us/windows/forum/windows_7-desktop/how-can-i-get-chinesejapanese-characters-to/fdb1f1da-b868-40d1-a4a4-7acadff4aafa? page = 2 & auth = 1

Gabriels Antwort auf die Daten in Notepad ++ war auch ein Hinweis auf Windows.

0
Malcolm Lock