ISO-8859-1からWindows-1251にフォーマット

ISO-8859-1からWindows-1251にフォーマット

UTF-8文字列 "ÏåðåïðîøèòüÑûðîåæêèíà"のエンコーディングを修正し、正しい文字列 "Перепрошить Сыроежкина"を取得したいと思います。これISO-8859-1Webサイトは正しい結果を得るためにからに変換する必要があることを伝えますが、この方法をWindows-1251使用しようとするとiconv次のエラーが発生します。

$ echo 'Ïåðåïðîøèòü Ñûðîåæêèíà' | iconv -f iso-8859-1 -t windows-1251 -
iconv: illegal input sequence at position 0

Windows-1251私も理解していないのはなぜ文字列をUTF-8

編集:私も試してみましたが、enconv結果も満足できませんでした。

$ echo 'Ïåðåïðîøèòü Ñûðîåæêèíà' | enca -L ru -
Universal transformation format 8 bits; UTF-8
  Doubly-encoded to UTF-8 from ISO-8859-5
$ echo 'Ïåðåïðîøèòü Ñûðîåæêèíà' | enconv -L ru -x UTF-8 -
Ïåðåïðîøèòü Ñûðîåæêèíà
$ echo 'Ïåðåïðîøèòü Ñûðîåæêèíà' | enconv -L ru -x windows-1251 -

答え1

文字列は二重にエンコードされているようです。まず、元のWindows-1251がISO-8859-1として誤って解釈され、次に誤って解釈された文字自体が対応するUTF-8文字に変換されます。

「正しい」テキストと一緒に「間違った」テキストが見える文字として表示される可能性があるという事実は、システムがUTF-8または他のUnicode文字セットで実行されており、文字列が誤って解釈されてUnicode形式に変換されたことを示します。

次のようにデコードしてみてください。

echo 'Ïåðåïðîøèòü Ñûðîåæêèíà' | iconv -f utf-8 -t iso-8859-1 | iconv -f windows-1251 -t utf-8
Перепрошить Сыроежкина

これらの文字が実際にデフォルトの8ビットエンコーディングにある場合、文字列はUTF-8システムで「���������������������」のように表示されます。 ISO-8859-1(または8ビット文字セット)の文字は、UTF-8として解釈されたときに「誤ったエンコード」結果を生成する可能性があります。記号「�」があります。

システムが実際にISO-8859-1を使用している場合、文字列は「ÏåðåïðîøèòüÑûðîåæêèèíà」と表示されますが、ISO-8859-1のため、同じ端末ウィンドウに「Перепрошить Сыроежкина」を表示することはできません。キリル文字はまったくありません。

接続しようとしているWebサイトは、受信文字列をUTF-8として扱い、この変換がブラウザとWebサーバー間の通信の一部であると仮定し、他の誤解を識別する可能性があります。

関連情報