[perl] а в перле подскажите плиз как наверняка узнать кодировку?
на каком языке ожидается входной текст?
ну может функция будет переводить в разные кодировки и это можно будет вывести на экран и увидеть читается ли.
короче терминал вроде выводит в UTF8. текст приходит якобы в 1251. но не могу прочитать и все. якобы перл еще между делом преобразует в свою внутреннюю кодировку и в ней выводит. может на русском есть ликбез по этому делу. на хабре находил применительно к php. ничо не понял все равно.
точнее так. я могу прочитать вывод. т.е. вывод в понятной форме на экран могу сделать, но при записи в лог выдается ошибка, что нет в системе такой кодировки. как так не пойму.
внутреннее представление строк в памяти на сегодняшний день совпадает с UTF-8, хорошей документации на русском языке порекомендовать не могу, на английском стоит прочитить вот этот ликбез: http://stackoverflow.com/questions/6162484/why-does-modern-p...
my $ua = new LWP::UserAgent;
my $page = $ua->get($myurl);
my $xml=XML::Smart->new($page->content);
write_log('[Result]='.$xml->{Response}{Result}.
' [ErrCode]=|'.$xml->{Response}{ErrCode}.'|'.
#' [Description]='.$xml->{Response}{Description});
'');
вобщем за ликбез спасибо, этого наверно более чем. и я подумал, что если сильно захочу сделаю несолько файликов в винде с заведомо ясной кодировкой и просто разберу несолько примеров.
после беглого прочтения не нашел в нем ничего, что как-то работает с кодировкой данных, следовательно, на вход ему следует подавать декодированные данные.
$page->content возвращает октеты, их следует декодировать. можно использовать $page->decoded_content и рассчитывать на то, что все заголовки установлены корректно, либо, если кодировка известна (например, UTF-8 то сделать $data = Encode::decode('UTF-8', $page->content и уже $data скармливать модулю.
еще один момент — в заголовке xml должна быть указана кодировка, можно брать ее оттуда, если она там есть и если этим данным можно доверять в твоем случае.
плюс, следует отдельно проверить, что write_log правильно работает с выводом.
с виндой особо опыта нет, но из того, что видел — это то, что дефолтная кодировка терминала — cp-866, т.е. отличается от дефолтных настроек кодировки софта, который работает с текстовыми файлами
учту, спасибо.
нужны входные данные и описание желаемого результата1. гавно
2. сделать заебись
в общем виде никак... если у тебя будет слово из 2-х букв, ты не сможешь определить win1251 or koi8-r
в смысле? какая разница сколько букв?
А как ты предлагаешь определить, является ли слово "бНОПНЯ" словом "бНОПНЯ" в KOI8-R или словом "Вопрос" в CP1251? Тут уже надо на частоты и в словари смотреть, а для этого нужно много букв.
моя фраза про 1 вход и 1 выход - это только хотелка как про мир на земле
является ли слово "бНОПНЯ" словом "бНОПНЯ" в KOI8-R или словом "Вопрос" в CP1251?Уже давно с большой вероятностью первое.
где-то до сих пор активно используется однобайтная кодировка?
я так определял, если в слове больше 80% букв заглавные то это koi8-r, иначе win1251
НИЧЕГО СЕБЕ!
мАКАГНЯ какая-то
НИЧЕГО СЕБЕ!а ты не капси излишний раз
Оставить комментарий
Teteshnik
проблематично установить на сервер модуль без инета, а по минному полю ходить нет желания. из тех модулей что есть, ничего не выходит.текст приходит не понятный. плюс еще в мануале про какое-то преобразование в перловую кодировку пишут. не могу разобраться. нужен работающий пример, от чего отталкиваться.