Text-Processing

讀取以西方編碼 (ISO-8859-1) 編碼的文本文件時出現問題

  • July 20, 2016

我在編碼 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

引用自:https://unix.stackexchange.com/questions/296994