Często spotykam się z plikami tekstowymi (takimi jak pliki napisów w moim ojczystym języku, perskim ) z problemami z kodowaniem znaków. Te pliki są tworzone w systemie Windows i zapisywane z nieodpowiednim kodowaniem (wydaje się być ANSI), który wygląda bełkotliwie i nieczytelnie, tak jak to:
W systemie Windows można to łatwo naprawić za pomocą Notepad ++, aby przekonwertować kodowanie na UTF-8, jak poniżej:
Prawidłowy czytelny wynik wygląda następująco:
Dużo szukałem podobnego rozwiązania na GNU / Linux, ale niestety sugerowane rozwiązania (np. To pytanie ) nie działają. Przede wszystkim, Widziałem ludzi sugerują, iconv
a recode
jednak nie miałem szczęścia z tych narzędzi. Przetestowałem wiele poleceń, w tym następujące, i wszystkie zawiodły:
$ recode ISO-8859-15..UTF8 file.txt
$ iconv -f ISO8859-15 -t UTF-8 file.txt > out.txt
$ iconv -f WINDOWS-1252 -t UTF-8 file.txt > out.txt
Żaden z nich nie działał!
Używam Ubuntu-14.04 i szukam prostego rozwiązania (GUI lub CLI), które działa tak samo jak Notepad ++.
Jednym z ważnych aspektów bycia „prostym” jest to, że użytkownik nie musi określać kodowania źródłowego; raczej narzędzie powinno automatycznie wykryć kodowanie źródłowe, a użytkownik powinien zapewnić tylko kodowanie docelowe. Niemniej jednak z przyjemnością dowiem się o działającym rozwiązaniu, które wymaga podania kodowania źródłowego.
Jeśli ktoś potrzebuje przypadku testowego do zbadania różnych rozwiązań, powyższy przykład jest dostępny poprzez ten link .
iso-639
, ale to nie wydaje się być dostępny w jednej iconv
lub recode
. Przynajmniej nie widzę tego w wynikach iconv -l
.
vim
ale nie zadziałała.
vim '+set fileencoding=utf-8' '+wq' file.txt
.