Text-Processing
讀取以西方編碼 (ISO-8859-1) 編碼的文本文件時出現問題
我在編碼 ISO-8859-1 文本文件(波蘭語字幕)時遇到問題,看起來像這樣:
他一個人住,| 沒有妻子,沒有孩子。
應該是:“他一個人住,沒有妻子,沒有孩子。”
我試過了:
- 使用 iconv 將文本文件轉換為 UTF-8
- 使用 medit 將編碼更改為 UTF-8。
- 將系統語言更改為波蘭語(我在系統語言上使用英語語言環境,但波蘭語鍵盤設置)
我正在使用 Arch Linux 發行版。我將提供有關語言環境的資訊,因為它可能會對案件產生影響。
locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC=pl_PL.UTF-8 LC_TIME=pl_PL.UTF-8 LC_COLLATE="en_US.UTF-8" LC_MONETARY=pl_PL.UTF-8 LC_MESSAGES="en_US.UTF-8" LC_PAPER=pl_PL.UTF-8 LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT=pl_PL.UTF-8 LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
感謝您的所有回答。
我找到了解決方案,我會在這裡留下答案,因為它可能對其他有同樣問題的人有用。
使用不同的編碼打開文本文件!對我(波蘭語)來說,它是 CP1250(中歐)。為此,打開 gedit,選擇“打開”選項並找到需要的文件。然後選擇字元編碼(左下角)並選擇“WINDOWS-1250”。
由於它與電影字幕相關聯,因此無需每次在執行電影字幕之前手動更改編碼。在幾乎每個影片播放器中,都有一個選擇預設字幕編碼的選項。對於波蘭語,只需選擇 Windows-1250,應用程序就會讀取字幕,就好像它們是用那種編碼編碼的一樣。
無論如何,謝謝你的幫助吉爾斯!
波蘭語的標準 8 位編碼是latin2 aka ISO 8859-2。³ 代表 ł,¿ 代表 ż 等的文本是解釋表示 latin2 中的文本的字節序列的結果,就好像它們表示 latin1 一樣。Latin1 又名 ISO 8859-1 是大多數西歐語言的標準編碼。
如果文本以 latin2 編碼,則需要將其從 latin2 轉換為 UTF-8,而不是從 latin1 轉換為 UTF-8。
iconv -f latin2 -t utf8
(這裡
-t utf8
是可選的,因為您呼叫的是 UTF-8 語言環境。)如果您顯示的是您閱讀時的文本,那麼這意味著它在某些時候從 8 位錯誤地轉換為 Unicode。要更正它,請轉換回原始字節,然後將其轉換為您的編碼。
iconv -f utf8 -t latin1 | iconv -f latin2 -t utf8