<div class="gmail_quote">6 января 2010 г. 13:17 пользователь Alex Povolotsky <span dir="ltr">&lt;<a href="mailto:tarkhil@over.ru">tarkhil@over.ru</a>&gt;</span> написал:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



  

<div bgcolor="#ffffff" text="#000000"><div class="im">
On 01/06/10 15:12, Andrei wrote:
<blockquote type="cite">
  
Судя по исходникам, это баг:<br>
  <br>
  <a href="http://cpansearch.perl.org/src/BCHOATE/Text-Textile-2.12/lib/Text/Textile.pm" target="_blank">http://cpansearch.perl.org/src/BCHOATE/Text-Textile-2.12/lib/Text/Textile.pm</a><br>
  <br>
</blockquote>
<br></div>
Да, логично. $t-&gt;new(charser=&gt;&#39;utf--8&#39;) и $t-&gt;charset(&#39;utf-8&#39;)
делают ЧУТЬ-ЧУТЬ разные вещи. <br>
<br>
... значит, грабли лежат где-то выше в MojoMojo...<br></div></blockquote><div><br>Я не про это. Я про то, что:<br><br><pre><span style="font-family: courier new,monospace;">sub charset {</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    my $self = shift;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    if (@_) {</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        $self-&gt;{charset} = shift;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        if ($self-&gt;{charset} =~ m/^utf-?8$/i) {</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">            $self-&gt;char_encoding(0);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        } else {</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">            $self-&gt;char_encoding(1);</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        }</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    }</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    return $self-&gt;{charset};</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">}</span><br></pre><br>Т.е. сеттер для charset устанавливает char_encoding в 0, если /^utf-?8$/ . В то время как в new char_encoding по умолчанию устанавливается в 1, значит, его нужно устанавливать в 0 явно вместе с charset =&gt; &#39;utf-8&#39;. Ну, или править исходники.<br>
<br>Теоретически<br><br><span style="font-family: courier new,monospace;">perl -MText::Textile -e &#39;my $t = Text::Textile-&gt;new(charset=&gt;&quot;utf-8&quot;, char_encoding =&gt; 0);print $t-&gt;textile(&quot;h1.И где он уродует русский?\n&quot;),&quot;\n&quot;;&#39;</span><br>
<br>должно работать правильно.<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div bgcolor="#ffffff" text="#000000">
<br>
Alex.<br>
<br>
</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><br clear="all"><br>-- <br>Andrei Protasovitski<br>&lt; andrei[dot]protasovitski[at]gmail[dot]com &gt;<br>Diemen, Netherlands<br>