西部エンコード(ISO-8859-1)でエンコードされたテキストファイルを読み取るのに問題があります。

西部エンコード(ISO-8859-1)でエンコードされたテキストファイルを読み取るのに問題があります。

次のように、ISO-8859-1テキストファイル(ポーランド語字幕)のエンコードに問題があります。

Mieszka³サム、|¿アドネイ¿オンニ、ジエシ。

"Mieszkał sam、żadnejżony、dzieci"でなければなりません。

私は試した:

  • 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=

すべての回答に感謝します。

ベストアンサー1

ポーランド語の標準8ビットエンコーディングは次のとおりです。latin2(別名ISO 8859-2)。 3はł、¿を表します。 żなどを表すテキストは、latin2テキストを表すバイト列をあたかもlatin1を表すかのように解釈した結果です。 ISO 8859-1としても知られているLatin1は、ほとんどの西ヨーロッパ言語の標準エンコーディングです。

テキストがlatin2でエンコードされている場合は、latin1からUTF-8ではなくlatin2からUTF-8に変換する必要があります。

iconv -f latin2 -t utf8

-t utf8UTF-8ロケールを呼び出すので、これはオプションです。)

テキストを読みながら表示すると、これはある時点で8ビットからUnicodeに正しく変換されなかったことを意味します。これを修正するには、生のバイトに戻してからエンコードに変換します。

iconv -f utf8 -t latin1 | iconv -f latin2 -t utf8

おすすめ記事