2013-03-15 27 views
9

Próbuję przekonwertować kodowany ciąg CP1252 Çàïèñêè ýêñïåäèòîðà na UTF-8. Próbowałem tego polecenia:iconv: Konwertuj z CP1252 na UTF-8

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

nie ma szczęścia, dostając jakieś dziwne wyniki:

ASA € à ‡ â € ÃÃœ ÃÃŽÃ,Ã> à ‰  ... jak

próbowałem wprowadzania ten sam ciąg znaków (Çàïèñêè ýêñïåäèòîîðà) jest tutaj i są w stanie przekształcić go bez problemów: http://www.artlebedev.ru/tools/decoder/

Co dzieje się nie tak?

Odpowiedz

-1

spróbować odwrotny

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

Nie, nie działa :) – Somebody

0

Moje rozwiązanie:

iconv -f windows-1252 -t utf-8 in.file -o out.file 
+0

Nie działa też :) dla Çàïèñêêè ýêñïåäèòîðà daje à ‡Ã¨Ã|Ã|èèà ± à à à à à à à à à à à à à à à à à ę à ¼ à 01 – Somebody

5

możesz ned użyć tego:

$ echo "Çàïèñêè ýêñïåäèòîðà" | iconv -t latin1 | iconv -f cp1251 
Записки экспедитора 
+0

To nie odpowiada na pytanie. Program operacyjny specjalnie pytał o konwersję z kodowania CP1252 na UTF-8, a twoje polecenie nie używa żadnego kodowania. – Edward

+3

@Edward łańcuch OP podany jest w cp1251, nie cp1252, myślę, że popełnił błąd w tej części –

13

Podczas konwersji CP1252 zakodowany ciąg Çàïèñêè ýêñïåäèòîðà na UTF-8 polecenie iconv.exe -f CP1252 -t UTF-8 test.txt >testout.txt, a następnie plik źródłowy test.txt (Widok heksadecymalny:

enter image description here

) zostanie przekształcona w docelowym pliku testout.txt (zobacz Hex:

enter image description here

), który jest kod UTF-8 Çàïèñêè ýêñïåäèòîðà.

Te same śmieci, które włożysz, nadejdą, drugi koniec. Zachowanie iconv jest poprawne i zgodnie z oczekiwaniami.

To, na co cię niepokoi, to to, że nie widzisz tego, czego się spodziewasz, a to dlatego, że Twój 8-bitowy ciąg wejściowy jest faktycznie kodowany w Windows-1251 (Cyrillic) Codepage.

→ Więc prawidłowa strona kodowa nie jest CP125 ale CP125 ←

enter image description here

poleceń iconv.exe -f CP1251 -t UTF-8 test.txt >testout2.txt konwertuje plik źródłowy test.txt do pliku docelowego testout2.txt (zobacz Hex:

enter image description here

), który jest UTF-8 kod Записки экспедитора co jest, co Twój użytkownika spodziewać

0

jeśli używasz Linuksa należy użyć enconv

./enconv.sh -d /home/foo/example/directory -e ".java" -f "iso-8859-1" -t "utf-8" 
0
iconv -f utf8 -t cp1252 file.php | iconv -f cp1251 -t utf8 > file-utf8.php 
+1

proszę pamiętać, aby napisać wyjaśnienie. –