Сделал как вы посоветовали все получилось ) <span style="font-size:11.0pt;color:#1F497D"><a href="http://perldoc.perl.org/5.10.1/functions/sub.html" target="_blank"><span style="color:#1F497D;text-decoration:none"></span></a></span>решил просто вырезать все лишнее ) .<br>

<br>Всем спасибо за советы).<br><br><div class="gmail_quote">5 апреля 2011 г. 11:39 пользователь Mike Salnikov <span dir="ltr"><<a href="mailto:msalnikov@parallels.com">msalnikov@parallels.com</a>></span> написал:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div link="blue" vlink="purple" lang="RU"><div><div class="im"><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">>> </span><span style="font-size:11.0pt;color:#1F497D">А</span><span style="font-size:11.0pt;color:#1F497D"> </span><span style="font-size:11.0pt;color:#1F497D">если</span><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> encode('cp1251', $text, 1)?</span><span lang="EN-US"><br>

> "\x{2015}" does not map to cp1251 at /usr/local/lib/perl5/5.10.1/mach/Encode.pm line 158.<br></span>> Мне кажется что проблема в том что некоторые символы не могут быть перекодированы в cp1251 потому ничего <span lang="EN-US"></span></p>

<p class="MsoNormal"><span lang="EN-US">> </span>не происходит <br><br><span style="font-size:11.0pt;color:#1F497D"></span></p></div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Ага </span><span style="font-size:11.0pt;color:#1F497D"></span></p>

<table style="border-collapse:collapse" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="border:solid black 1.0pt;background:#F8F8F8;padding:.75pt 6.0pt .75pt 6.0pt"><p class="MsoNormal" style="text-align:center" align="center">

U+2015</p></td><td style="border:solid black 1.0pt;border-left:none;background:#F8F8F8;padding:.75pt 6.0pt .75pt 6.0pt"><p class="MsoNormal" style="text-align:center" align="center">―</p></td><td style="border:solid black 1.0pt;border-left:none;background:#F8F8F8;padding:.75pt 6.0pt .75pt 6.0pt">

<p class="MsoNormal" style="text-align:center" align="center">e2 80 95</p></td><td style="border:solid black 1.0pt;border-left:none;background:#F8F8F8;padding:.75pt 6.0pt .75pt 6.0pt"><p class="MsoNormal" style="margin-left:18.0pt">

HORIZONTAL BAR</p></td></tr></tbody></table><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Не знает она как эту «тире» в ср1251 сконвертить.</span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Однако, дока нам намекает, что конвертирование при этом вроде не должно было покосячить остальные символы:</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">“If CHECK is 0, (en|de)code will put a substitution character in place of a malformed character...”</span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Попробуй подставить свой обработчик левых символов:</span></p><p class="MsoNormal">

<span style="font-size:11.0pt;color:#1F497D"><a href="http://perldoc.perl.org/5.10.1/Encode.html#coderef-for-CHECK" target="_blank">http://perldoc.perl.org/5.10.1/Encode.html#coderef-for-CHECK</a></span></p><p class="MsoNormal">

<span style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">что-то типа:</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">encode("cp1251", $text, <a href="http://perldoc.perl.org/5.10.1/functions/sub.html" target="_blank"><span style="color:#1F497D;text-decoration:none">sub</span></a>{ <a href="http://perldoc.perl.org/5.10.1/functions/sprintf.html" target="_blank"><span style="color:#1F497D;text-decoration:none">sprintf</span></a> "<U+%04X>", <a href="http://perldoc.perl.org/5.10.1/functions/shift.html" target="_blank"><span style="color:#1F497D;text-decoration:none">shift</span></a> });</span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">посмотрим на результат. Если строчка станет читаемой по-русски – меняешь </span><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">sprintf</span><span style="font-size:11.0pt;color:#1F497D" lang="EN-US"> </span><span style="font-size:11.0pt;color:#1F497D">по вкусу. </span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Если нет – истина где-то глубже...</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">----</span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Mike Salnikov</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Parallels </span></p><p class="MsoNormal">

<span style="font-size:11.0pt;color:#1F497D"> </span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">

<p class="MsoNormal"><b><span style="font-size:10.0pt" lang="EN-US">From:</span></b><span style="font-size:10.0pt" lang="EN-US"> moscow-pm-bounces+msalnikov=<a href="http://parallels.com" target="_blank">parallels.com</a>@<a href="http://pm.org" target="_blank">pm.org</a> [mailto:<a href="mailto:moscow-pm-bounces%2Bmsalnikov" target="_blank">moscow-pm-bounces+msalnikov</a>=<a href="http://parallels.com" target="_blank">parallels.com</a>@<a href="http://pm.org" target="_blank">pm.org</a>] <b>On Behalf Of </b>Денис Ильиных<br>

<b>Sent:</b> Tuesday, April 05, 2011 1:54 PM<br><b>To:</b> Moscow.pm group<br><b>Subject:</b> Re: [Moscow.pm] Очень плохая музыка с UTF-8</span></p></div></div><div><div></div><div class="h5"><p class="MsoNormal"> </p><p class="MsoNormal" style="margin-bottom:12.0pt">

По советам сделал следующее<br><br>перекодирую так<br>my $cv = Text::Iconv->new("utf-8", "cp1251");<br>$text = $cv->convert($str);<br>ошибок нет вывод просто пустой.<br><br>По вашим советам<br>utf8::is_utf8($str) => 1;<br>

<br>my $utf8 = pack 'C*', unpack 'U0C*',$str;<br>--- ГђВ§ГђВ°Г‘Ñ‹ ГђВјГ‘ƒÐ¶ÑÐºÐ¸Ðµ CHARMEX VIENNA CH 2031 ГўВЂВ• ГђВЎГђВ°ГђВјГ‘‹Ðµ ГђВњГђВѕГђВґГђВЅГ‘‹Ðµ ГђВ§ГђВ°Г‘Ñ‹<br><br>my $utf8 = pack 'U0C*', unpack 'C*',$str;<br>

--- "'0AK <C6A:85 CHARMEX VIENNA CH 2031 \x15 !0<K5 \x1c>4=K5 '0AK"<br><br><span style="font-size:11.0pt;color:#1F497D">А если encode('cp1251', $text, 1)?</span><br>"\x{2015}" does not map to cp1251 at /usr/local/lib/perl5/5.10.1/mach/Encode.pm line 158.<br>

Мне кажется что проблема в том что некоторые символы не могут быть перекодированы в cp1251 потому ничего не происходит <br><br><br>Более подробно.<br>Я собираю заголовки сайтов.<br>LWP -> $tree = HTML::TreeBuilder->new_from_content($response->decoded_content);<br>

$title = $tree->look_down(_tag=>"title");<br>my $ntitle = $title->as_text;<br><br>Ошибка на сайте <br>--- GET => <a href="http://www.m-m-i.ru/index.php?productID=1181" target="_blank">http://www.m-m-i.ru/index.php?productID=1181</a><br>

<br>Это исключение чем правило. Другие заголовки сайтов в UTF-8 обрабатываются корректно.<br><br><br></p><div><p class="MsoNormal">5 апреля 2011 г. 10:34 пользователь Mike Salnikov <<a href="mailto:msalnikov@parallels.com" target="_blank">msalnikov@parallels.com</a>> написал:</p>

<div><div><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">А если encode('cp1251', $text, 1)?</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"><a href="http://perldoc.perl.org/Encode.html#Handling-Malformed-Data" target="_blank"><span style="color:#1F497D;text-decoration:none">http://perldoc.perl.org/Encode.html#Handling-Malformed-Data</span></a></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D">Что говорит is_utf8($text)?</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">----</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Mike Salnikov</span></p><p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D" lang="EN-US">Parallels </span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;color:#1F497D"> </span></p><div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt"><div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">

<p class="MsoNormal"><b><span style="font-size:10.0pt" lang="EN-US">From:</span></b><span style="font-size:10.0pt" lang="EN-US"> moscow-pm-bounces+msalnikov=<a href="http://parallels.com" target="_blank">parallels.com</a>@<a href="http://pm.org" target="_blank">pm.org</a> [mailto:<a href="mailto:moscow-pm-bounces%2Bmsalnikov" target="_blank">moscow-pm-bounces+msalnikov</a>=<a href="http://parallels.com" target="_blank">parallels.com</a>@<a href="http://pm.org" target="_blank">pm.org</a>] <b>On Behalf Of </b>Денис Ильиных<br>

<b>Sent:</b> Tuesday, April 05, 2011 1:02 PM<br><b>To:</b> <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a><br><b>Subject:</b> [Moscow.pm] Очень плохая музыка с UTF-8</span></p></div></div><div><div>

<p class="MsoNormal"> </p><p class="MsoNormal" style="margin-bottom:12.0pt">Привет мои дорогие )) Помогите разобраться сломал уже весь моск.<br><br>Есть строка в UTF-8 о чем нам говорит Encode::Detect::Detector;<br><br>Пытаюсь ее перевести в cp1251 в итоге <br>

<br>--- UTF-8 (Encode::Detect::Detector)<br>--- Р§Р°СЃС‹ РјСѓР¶СЃРєРёРµ CHARMEX VIENNA CH 2031 вЂ• РЎР°РјС‹Рµ РњРѕРґРЅС‹Рµ Р§Р°СЃС‹ (строка)<br>--- ~  (тут должен был быть текст Text::Iconv )<br>--- 'Г—Г Г±Г» Г¬ГіГ¦Г±ГЄГЁГҐ CHARMEX VIENNA CH 2031 ? Г‘àìûå ГЊГ®Г¤Г­Г»ГҐ Г—Г Г±Г»' (тут текст encode('cp1251',$text))<br>

<br>Причем другие строки которые детектируются как UTF-8 обрабатываются корректно.<br>Есть подозрение что в строке есть спецсимволы на которых Iconv не срабатывает или строка не UTF-8, ошибается детектор. <br><br>perl 5.10.1</p>

</div></div></div></div></div><p class="MsoNormal" style="margin-bottom:12.0pt"><br>--<br>Moscow.pm mailing list<br><a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a></p>

</div><p class="MsoNormal"> </p></div></div></div></div></div><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br>