[Moscow.pm] Очень плохая музыка с UTF-8

Денис Ильиных greyhard на gmail.com
Вт Апр 5 01:42:53 PDT 2011


Сделал как вы посоветовали все получилось )
<http://perldoc.perl.org/5.10.1/functions/sub.html>решил просто вырезать все
лишнее ) .

Всем спасибо за советы).

5 апреля 2011 г. 11:39 пользователь Mike Salnikov
<msalnikov на parallels.com>написал:

> >> А если encode('cp1251', $text, 1)?
> > "\x{2015}" does not map to cp1251 at
> /usr/local/lib/perl5/5.10.1/mach/Encode.pm line 158.
> > Мне кажется что проблема в том что некоторые символы не могут быть
> перекодированы в cp1251 потому ничего
>
> > не происходит
>
> Ага
>
> U+2015
>
>>
> e2 80 95
>
> HORIZONTAL BAR
>
>
>
> Не знает она как эту «тире» в ср1251 сконвертить.
>
> Однако, дока нам намекает, что конвертирование при этом вроде не должно
> было покосячить остальные символы:
>
> “If CHECK is 0, (en|de)code will put a substitution character in place of a
> malformed character...”
>
>
>
> Попробуй подставить свой обработчик левых символов:
>
> http://perldoc.perl.org/5.10.1/Encode.html#coderef-for-CHECK
>
>
>
> что-то типа:
>
> encode("cp1251", $text, sub<http://perldoc.perl.org/5.10.1/functions/sub.html>{
> sprintf <http://perldoc.perl.org/5.10.1/functions/sprintf.html>"<U+%04X>",
> shift <http://perldoc.perl.org/5.10.1/functions/shift.html> });
>
>
>
> посмотрим на результат. Если строчка станет читаемой по-русски – меняешь
> sprintf по вкусу.
>
> Если нет – истина где-то глубже...
>
>
>
> ----
>
> Mike Salnikov
>
> Parallels
>
>
>
> *From:* moscow-pm-bounces+msalnikov=parallels.com на pm.org [mailto:
> moscow-pm-bounces+msalnikov=parallels.com на pm.org] *On Behalf Of *Денис
> Ильиных
> *Sent:* Tuesday, April 05, 2011 1:54 PM
> *To:* Moscow.pm group
> *Subject:* Re: [Moscow.pm] Очень плохая музыка с UTF-8
>
>
>
> По советам сделал следующее
>
> перекодирую так
> my $cv = Text::Iconv->new("utf-8", "cp1251");
> $text = $cv->convert($str);
> ошибок нет вывод просто пустой.
>
> По вашим советам
> utf8::is_utf8($str) => 1;
>
> my $utf8 = pack 'C*', unpack 'U0C*',$str;
> --- Часы мужские CHARMEX VIENNA CH 2031
> ― Самые Модные Часы
>
> my $utf8 = pack 'U0C*', unpack 'C*',$str;
> --- "'0AK <C6A:85 CHARMEX VIENNA CH 2031 \x15 !0<K5 \x1c>4=K5 '0AK"
>
> А если encode('cp1251', $text, 1)?
> "\x{2015}" does not map to cp1251 at
> /usr/local/lib/perl5/5.10.1/mach/Encode.pm line 158.
> Мне кажется что проблема в том что некоторые символы не могут быть
> перекодированы в cp1251 потому ничего не происходит
>
>
> Более подробно.
> Я собираю заголовки сайтов.
> LWP -> $tree =
> HTML::TreeBuilder->new_from_content($response->decoded_content);
> $title = $tree->look_down(_tag=>"title");
> my $ntitle = $title->as_text;
>
> Ошибка на сайте
> --- GET => http://www.m-m-i.ru/index.php?productID=1181
>
> Это исключение чем правило. Другие заголовки сайтов в UTF-8 обрабатываются
> корректно.
>
>
> 5 апреля 2011 г. 10:34 пользователь Mike Salnikov <msalnikov на parallels.com>
> написал:
>
> А если encode('cp1251', $text, 1)?
>
> http://perldoc.perl.org/Encode.html#Handling-Malformed-Data
>
>
>
> Что говорит is_utf8($text)?
>
>
>
> ----
>
> Mike Salnikov
>
> Parallels
>
>
>
> *From:* moscow-pm-bounces+msalnikov=parallels.com на pm.org [mailto:
> moscow-pm-bounces+msalnikov=parallels.com на pm.org] *On Behalf Of *Денис
> Ильиных
> *Sent:* Tuesday, April 05, 2011 1:02 PM
> *To:* moscow-pm на pm.org
> *Subject:* [Moscow.pm] Очень плохая музыка с UTF-8
>
>
>
> Привет мои дорогие )) Помогите разобраться сломал уже весь моск.
>
> Есть строка в UTF-8 о чем нам говорит Encode::Detect::Detector;
>
> Пытаюсь ее перевести в cp1251 в итоге
>
> --- UTF-8 (Encode::Detect::Detector)
> --- Часы мужские CHARMEX VIENNA CH 2031 ― Самые
> Модные Часы (строка)
> --- ~  (тут должен был быть текст Text::Iconv )
> --- '×à ñû ìóæñêèå CHARMEX VIENNA CH 2031 ? Ñà ìûå
> Ìîäíûå Г—Г Г±Г»' (тут текст encode('cp1251',$text))
>
> Причем другие строки которые детектируются как UTF-8 обрабатываются
> корректно.
> Есть подозрение что в строке есть спецсимволы на которых Iconv не
> срабатывает или строка не UTF-8, ошибается детектор.
>
> perl 5.10.1
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20110405/fae5b024/attachment-0001.html>


Подробная информация о списке рассылки Moscow-pm