13

CP1252でエンコードされた文字列ÇàïèñêèýêñïåäèòîðàをUTF-8に変換しようとしています。私はこのコマンドを試しました:

iconv -c -f=WINDOWS-1252 -t=UTF-8 test.txt

運が悪い、奇妙な結果が得られる:

ÊÀÇÀÃÜÃÎÂÛÉÂÅÊ</ p>

ここに同じ文字列(Çàïèñêèýêñïåäèòîðà)を入力してみましたが、問題なく変換できます: http ://www.artlebedev.ru/tools/decoder/

何が問題になっていますか?

4

6 に答える 6

23

CP1252 でエンコードされた文字列Çàïèñêè ýêñïåäèòîðàをコマンドで UTF-8 に変換するとiconv.exe -f CP1252 -t UTF-8 test.txt >testout.txt、ソース ファイルtest.txt(16 進表示:

ここに画像の説明を入力

) はターゲット ファイルに変換されますtestout.txt(Hex ビュー:

ここに画像の説明を入力

) の UTF-8 コードですÇàïèñêè ýêñïåäèòîðà

あなたが入れたのと同じゴミがもう一方の端から出てきます。iconv の動作は正しく、期待どおりです。

あなたが当惑しているのは、あなたが期待したものが見えないということです。それは、入力 8 ビット文字列が実際にはWindows-1251 (キリル) Codepageでエンコードされているためです。

→ したがって、正しいコード ページは CP125 ではありません2でも CP125 1 ←</p>

ここに画像の説明を入力

コマンドiconv.exe -f CP1251 -t UTF-8 test.txt >testout2.txtは、ソース ファイルtest.txtをターゲット ファイルに変換しますtestout2.txt(16 進表示:

ここに画像の説明を入力

Записки экспедитора) これは、ユーザーが期待するものである UTF-8 コードです

于 2014-09-16T10:48:29.140 に答える
7

これを使用する必要があります:

$ echo "Çàïèñêè ýêñïåäèòîðà" | iconv -t latin1 | iconv -f cp1251
Записки экспедитора
于 2014-02-12T16:39:46.953 に答える
3

私の解決策:

iconv -f windows-1252 -t utf-8 in.file -o out.file
于 2013-12-09T11:26:49.573 に答える
0
iconv -f utf8 -t cp1252 file.php | iconv -f cp1251 -t utf8 > file-utf8.php
于 2015-11-05T10:47:31.063 に答える
0

Linux を使用している場合は、enconvを使用する必要があります

./enconv.sh -d /home/foo/example/directory -e ".java" -f "iso-8859-1" -t "utf-8"
于 2015-07-14T22:09:22.330 に答える
-1

逆を試す

  iconv -c -f=UTF-8 -t=WINDOWS-1252 test.txt
于 2013-05-07T13:58:23.390 に答える