- Ich habe mich gefragt, ob einige Textdateien ihre Kodierungsmethode zusammen mit ihrem Textinhalt für die spätere Dekodierung speichern.
- Oder ist es die Aufgabe des Text-Viewers, die Codierungsmethode für eine bestimmte Textdatei zu erraten, und das Erraten ist möglicherweise nicht immer korrekt? Wenn ja, wie errät ein Textbetrachter das?
19
Antworten:
Die Antwort von Mark Szymanski ist richtig - es gibt keine expliziten Codierungsinformationen in einer Nur-Text-Datei - das ist die Definition von "Nur-Text-Datei", "Nur" bezieht sich auf die Tatsache, dass die Datei keine Metadaten enthält.
Allerdings werden einige Anwendungen ein Ort Byte-Order Mark (BOM) in Textdateien codiert als UTF-16 oder UTF-32 / UCS-4. Die Stückliste soll nicht wirklich die Kodierung anzeigen (sie gibt die Bytereihenfolge an, wie der Name sagt), aber viele Anwendungen verwenden das Vorhandensein der Stückliste, um UTF-16 / UTF-32 zu erkennen, sodass sie als Kodierungsindikator dient.
Ja, der Textbetrachter kann nur raten. In der Regel werden einige Heuristiken verwendet:
vim
standardmäßig: Es wird zuerst versucht, UTF-8 beim Lesen einer Datei zu verwenden; Wenn dies fehlschlägt, wird auf ISO-8859-1 zurückgegriffen.In den meisten Fällen muss einem Programm explizit mitgeteilt werden, wie die Codierung einer Textdatei lautet, sonst kann es sie nicht richtig lesen.
quelle
file -bi
, wenn die Stückliste nicht verwendet wird?file
über verschiedene Heuristiken zur Bestimmung des Dateityps und der Codierung. Meistens wird nach bestimmten Zeichenfolgen oder Bytefolgen in der Datei gesucht. Wenn Sie genauere Informationen wünschen, müssen Sie wahrscheinlich die Quelle lesen. Oder stellen Sie einfach eine separate Frage :-).file
kann die meisten Textkodierungen nicht zuverlässig erkennen (weil das sehr schwierig ist). Die Manpage enthält einige Informationen zur Zeichensatzerkennung -file
meist werden nur ASCII, UTF-8/16, EBCDIC und ISO-8859-x erkannt. Beispielsweise wird eine in KOI8-R codierte Datei als "ISO-8859-1" gemeldet.In einfachen Textdateien werden keine Informationen zu ihrer Kodierung gespeichert. Ein Betrachter bestimmt es basierend auf der Zeichenkodierung, die Sie dafür festgelegt haben. Es kann es nicht selbst bestimmen, da es dem Computer egal ist.
quelle
less
undgrep
unter Unix / Linux).