Character-Encoding
如何將帶有 CRLF 行終止符的非 ISO 擴展 ASCII 文本的編碼更改為 UTF-8?
我有一個 txt 文件:
$ file -i x.txt x.txt: text/plain; charset=unknown-8bit $ file x.txt x.txt: Non-ISO extended-ASCII text, with CRLF line terminators
還有一些字元編碼不正確:
trwa³y, sta³y, usuwaæ
如何將此文件的編碼更改為 UTF-8 ?到目前為止,我已經嘗試了以下方法:
$ iconv -f ASCII -t UTF-8 x.txt puiconv: illegal input sequence at position 4
也許我應該以某種方式使用
extended ASCII
( ) 但在的編碼列表high ASCII
中找不到它。iconv
file
告訴您“非 ISO 擴展 ASCII 文本”,因為它檢測到這是:
- 很可能是一個“文本”文件,因為除了換行符之外缺少控製字元(字節值 0-31);
- “extended-ASCII”,因為有超出 ASCII 範圍的字元(字節值 ≥128);
- “非 ISO”,因為在 128–159 範圍內有字元(ISO 8859保留此範圍用於控製字元)。
您必須弄清楚該文件似乎在哪種編碼中。您可以嘗試Enca的自動辨識。您可能需要通過告訴它文本是什麼語言來將其推向正確的方向。
enca x.txt enca -L polish x.txt
要轉換文件,請傳遞
-x
選項:enca -L polish x.txt -x utf8 >x.utf8.txt
如果您不能或不想使用 Enca,您可以手動猜測編碼。環顧四周告訴我,這是波蘭語文本,單詞是 trwały、stały、usuważ,所以我們正在尋找
³
→ł
和æ
→的翻譯ż
。這看起來像latin-2或latin-10或更可能(給定“非 ISO” CP1250,您將其視為latin1。要將文件轉換為 UTF-8,您可以使用recode或iconv。recode CP1250..utf8 <x.txt >x.utf8.txt iconv -f CP1250 -t UTF-8 <x.txt >x.utf8.txt