Раньше программировал в Винде, тексты (скрипты, формы и т.п.) были в основном в кодировке WIN. Сейчас перешел на Ubuntu и по ряду причин удобнее поменять кодировку на UTF.
Написал модулек, который переконвертирует все папки в UTF.
Но есть такой нуансик. В одном файле могут встречаться строчки с разной кодировкой - WIN, KOI8, ENG. WIN нормально конвертируется в UTF8, а вот KOI8 что-то не очень. Вместо русского текста получается нечитаемый русский, к примеру, вместо "Сайту" (типа, "Сайту 5 лет") получается
яЮИРС
Строка кода:
my $ch = Lingua::DetectCharset::Detect($str); # определяем кодировку - KOI8
$str = Convert::Cyrillic::cstocs('koi8', 'UTF8', $str); # Конвертируем
Перепробовал несколько методов - результат один и тот же. Благо что не много таких строчек. Они (по-видимому) получаются в результате того, что файлы на сервере правятся не одним человеком. В кодировке Винды никаких различий не замечалось, а сейчас могут полезть глюки.
После перекодировки получаем (проверяем по строкам в каком-нибудь файле):
ENG остается ENG (эти строки я пропускаю)
WIN становится UTF8 (и нормально читаются)
KOI8 становится ENG (и не читаются, а должны бы тоже стать UTF8. Почему?)
Кто-нибудь сталкивался с такой проблемкой?