<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Раздел полезных советов: Perl функция для quoted-printable кодирования в соответствии с RFC2047</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/49239.html</link>
    <description>Популярный Perl модуль MIME::Words  не обеспечивает quoted-printable кодирование &lt;br&gt;в полном соотвтетвии с  RFC2047 (пробелы между двумя закодированными блоками недопустимы).&lt;br&gt;&lt;br&gt;# rfc2047conv (строка, кодировка, размер префикса);&lt;br&gt;sub rfc2047conv&#123;&lt;br&gt;    my $str      = shift;       # чего кодировать&lt;br&gt;    my $charset  = uc(shift);   # какую кодировку приписать&lt;br&gt;    my $init_len = shift &amp;#124;&amp;#124; 0;  # длина того, что планируется добавить потом в начало строки&lt;br&gt;&lt;br&gt;    my $len = length($str);&lt;br&gt;&lt;br&gt;    return &apos;&apos; unless($len);&lt;br&gt;&lt;br&gt;    my $begin = &quot;=?$charset?Q?&quot;;&lt;br&gt;    my $res   = $begin;&lt;br&gt;    my $count = $init_len + length($begin);&lt;br&gt;    foreach my $c (split(//, $str)) &#123;&lt;br&gt;        my ($repl, $repl_len);&lt;br&gt;        if($c eq &apos;?&apos; &amp;#124;&amp;#124; $c eq &apos;_&apos; &amp;#124;&amp;#124; $c eq &apos;=&apos; &amp;#124;&amp;#124; $c lt &apos; &apos; &amp;#124;&amp;#124; $c gt &apos;~&apos;) &#123;&lt;br&gt;            $repl     = sprintf(&quot;=&#037;X&quot;, ord($c));&lt;br&gt;            $repl_len = 3;&lt;br&gt;        &#125; elsif($c eq &apos; &apos;) &#123;&lt;br&gt;            $repl     = &apos;_&apos;;&lt;br&gt;            $repl_len = 1;&lt;br&gt;        &#125; else &#123;&lt;br&gt;            $repl   </description>

<item>
    <title>Perl функция для quoted-printable кодирования в соответствии с RFC2047 (nm11)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/49239.html#3</link>
    <pubDate>Wed, 05 May 2010 18:42:29 GMT</pubDate>
    <description>спасибо пригодилось&lt;br&gt;для отправки смс через e-mail&lt;br&gt;</description>
</item>

<item>
    <title>Perl функция для quoted-printable кодирования в соответствии (dimedrol)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/49239.html#2</link>
    <pubDate>Fri, 12 Jun 2009 06:08:58 GMT</pubDate>
    <description>Спасибо автору!&lt;br&gt;Полезная функция. Но&lt;br&gt;в процессе эксплуатации заметил, что при переносе длинных строк, символы на границе строк могут быть перенесены некорректно, иногда разбиваются по середине, т.е. половина символа остается на одной строке, а вторая половина переносится на следую строку. Например, у меня была строка, в которой было слово &apos;найдено&apos;, и вот, как оно разбилось на части.&lt;br&gt;Буква &apos;д&apos; , после кодирования должна превращаться в &apos;=D0=B4&apos; . Так вот &apos;=D0&apos; осталось на одной строке, а &apos;=B4&apos; перенеслось на следующую, и как следствие, при чтении этого письма в почтовом клиенте, вместо буквы д были два знака вопроса.&lt;br&gt;&lt;br&gt;.....=D0=BD=D0=B0=D0=B9=D0?=&lt;br&gt;=?UTF-8?Q?=B4=D0=B5=D0=BD=D0=BE=A?=&lt;br&gt;&lt;br&gt;Stanislaus писал:&lt;br&gt;&amp;gt;Еще стоит взглянуть на Encode::MIME::Header,&lt;br&gt;&lt;br&gt;...&lt;br&gt;&lt;br&gt;Я пробовал Encode::MIME::Header. Он у меня вообще не заработал:&lt;br&gt;https://rt.cpan.org/Public/Bug/Display.html?id=46832&lt;br&gt;</description>
</item>

<item>
    <title>Perl функция для quoted-printable кодирования в соответствии (Stanislaus)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID3/49239.html#1</link>
    <pubDate>Tue, 10 Feb 2009 22:38:15 GMT</pubDate>
    <description>Еще стоит взглянуть на Encode::MIME::Header, который позволяет производить эти манипуляции так:    &lt;br&gt;use Encode qw/encode decode/; &lt;br&gt;$utf8   = decode(&apos;MIME-Header&apos;, $header);&lt;br&gt;$header = encode(&apos;MIME-Header&apos;, $utf8);&lt;br&gt;&lt;br&gt;правда только для UTF-8, но обычно больше ничего и не нужно. Главное, что бы хорошо работало. Использовать MIME::Words из MIME::Tools не советую.&lt;br&gt;</description>
</item>

</channel>
</rss>
