<div class="gmail_quote">6 января 2010 г. 13:17 пользователь Alex Povolotsky <span dir="ltr"><<a href="mailto:tarkhil@over.ru">tarkhil@over.ru</a>></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->new(charser=>'utf--8') и $t->charset('utf-8')
делают ЧУТЬ-ЧУТЬ разные вещи. <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->{charset} = shift;</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"> if ($self->{charset} =~ m/^utf-?8$/i) {</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;"> $self->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->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->{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 => 'utf-8'. Ну, или править исходники.<br>
<br>Теоретически<br><br><span style="font-family: courier new,monospace;">perl -MText::Textile -e 'my $t = Text::Textile->new(charset=>"utf-8", char_encoding => 0);print $t->textile("h1.И где он уродует русский?\n"),"\n";'</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>< andrei[dot]protasovitski[at]gmail[dot]com ><br>Diemen, Netherlands<br>