<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: Учим WordPress правильно кодировать письма в UTF-8</title>
	<atom:link href="http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/</link>
	<description>Quod scripsi, scripsi</description>
	<lastBuildDate>Wed, 08 Feb 2012 14:51:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Автор: Евгений</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-36401</link>
		<dc:creator>Евгений</dc:creator>
		<pubDate>Mon, 03 Jan 2011 12:47:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-36401</guid>
		<description>Добрый день, Владимир.
Проблема кодировки писем актуальна по сей день. Ты -единственный, кто пролил свет на этот злой глюк. Скажи пожалуйста, как следует понимать это сообщение?

&lt;strong&gt;&quot;Итак, патч в формате unified diff (должен применяться к файлу wp-includes/class-phpmailer.php&quot;&lt;/strong&gt;

Просто скопировать этот файл в директорию с файлом class-phpmailer.php ? Или как-то нужно выполнять команду diff? Запутался.
Пожалуйста, объясни. Буду очень признателен.</description>
		<content:encoded><![CDATA[<p>Добрый день, Владимир.<br />
Проблема кодировки писем актуальна по сей день. Ты -единственный, кто пролил свет на этот злой глюк. Скажи пожалуйста, как следует понимать это сообщение?</p>
<p><strong>&laquo;Итак, патч в формате unified diff (должен применяться к файлу wp-includes/class-phpmailer.php&raquo;</strong></p>
<p>Просто скопировать этот файл в директорию с файлом class-phpmailer.php ? Или как-то нужно выполнять команду diff? Запутался.<br />
Пожалуйста, объясни. Буду очень признателен.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Vladimir</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2940</link>
		<dc:creator>Vladimir</dc:creator>
		<pubDate>Wed, 17 Feb 2010 01:27:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2940</guid>
		<description>Вероятно, из-за того, что используется функция &lt;code lang=&quot;php&quot;&gt;substr()&lt;/code&gt; вместо &lt;code lang=&quot;php&quot;&gt;mb_substr()&lt;/code&gt;.</description>
		<content:encoded><![CDATA[<p>Вероятно, из-за того, что используется функция <span class="codebox"><code class="php"><span class="kw3">substr</span><span class="br0">&#40;</span><span class="br0">&#41;</span></code></span> вместо <span class="codebox"><code class="php"><span class="kw3">mb_substr</span><span class="br0">&#40;</span><span class="br0">&#41;</span></code></span>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Артур</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2936</link>
		<dc:creator>Артур</dc:creator>
		<pubDate>Tue, 16 Feb 2010 15:33:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2936</guid>
		<description>А у меня знаки вопроса вместо букв появляются в анонсах комментариев, которые отображаются на главной странице?</description>
		<content:encoded><![CDATA[<p>А у меня знаки вопроса вместо букв появляются в анонсах комментариев, которые отображаются на главной странице?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ivan1986</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2327</link>
		<dc:creator>Ivan1986</dc:creator>
		<pubDate>Sat, 07 Nov 2009 10:17:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2327</guid>
		<description>А, ну если PHP4 не закопали, то тогда все понятно :)
(поубивал бы :)

Я тоже с поддержкой PHP 5.2 в своем &lt;a href=&quot;http://sourceforge.net/projects/quickfw/&quot; rel=&quot;nofollow&quot;&gt;движке&lt;/a&gt; несколько вещей добавил, которые бы писались проще в 5.3, а в 5.2 не работают, но чтобы PHP4</description>
		<content:encoded><![CDATA[<p>А, ну если PHP4 не закопали, то тогда все понятно <img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />
(поубивал бы <img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Я тоже с поддержкой PHP 5.2 в своем <a href="http://sourceforge.net/projects/quickfw/" rel="nofollow">движке</a> несколько вещей добавил, которые бы писались проще в 5.3, а в 5.2 не работают, но чтобы PHP4</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Vladimir</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2326</link>
		<dc:creator>Vladimir</dc:creator>
		<pubDate>Sat, 07 Nov 2009 10:05:37 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2326</guid>
		<description>Ну WordPress-то не в России разрабатывают.

Они всё не могут оставить в покое хладный труп PHP4, а тут mbstring :-)

Вообще насколько я знаю ситуацию на америкосовских хостингах, заставить хостера поставить что-нибудь на работающий (во всех смыслах) сервер — это очень тяжело.

Я помню, как клиент неделю(!) уговаривал хостеров подключить mod_rewrite(!!!).

По-видимому, это одна из причин, по которой разработчики не хотят создавать дополнительные зависимости.</description>
		<content:encoded><![CDATA[<p>Ну WordPress-то не в России разрабатывают.</p>
<p>Они всё не могут оставить в покое хладный труп PHP4, а тут mbstring <img src='http://blog.sjinks.pro/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Вообще насколько я знаю ситуацию на америкосовских хостингах, заставить хостера поставить что-нибудь на работающий (во всех смыслах) сервер — это очень тяжело.</p>
<p>Я помню, как клиент неделю(!) уговаривал хостеров подключить mod_rewrite(!!!).</p>
<p>По-видимому, это одна из причин, по которой разработчики не хотят создавать дополнительные зависимости.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ivan1986</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2325</link>
		<dc:creator>Ivan1986</dc:creator>
		<pubDate>Sat, 07 Nov 2009 09:56:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2325</guid>
		<description>Конечно не ставят, для леммингов ведь в частности делается, а в таких поделках как денвер мбстринг по умолчанию не установлен, а поставить - это ведь думать нужно, лемминги не думают. Им проще реализовать дополнительную кривую функцию, которая будет работать везде, чем отбиваться от пачки запросов почему не работает.

Вообще я не понимаю ситуации - на хостинге не установлено что-то, раз не установлено, так надо поставить, да и дубаю что mbstring будет установлен на всех по крайне мере русских хостингах, иначе это уже не хостинг, а так, детский сад.

По поводу &quot;This function...
Я так понял могут появляться лишние пробелы при кодировании переводов строк или что-то еще
Сейчас проверил - многостроковая тема корректно кодируется и потом корректно раскодируется в кмайле, и в случае попадания пробела между котированными частями на перевод строки тоже.</description>
		<content:encoded><![CDATA[<p>Конечно не ставят, для леммингов ведь в частности делается, а в таких поделках как денвер мбстринг по умолчанию не установлен, а поставить &#8211; это ведь думать нужно, лемминги не думают. Им проще реализовать дополнительную кривую функцию, которая будет работать везде, чем отбиваться от пачки запросов почему не работает.</p>
<p>Вообще я не понимаю ситуации &#8211; на хостинге не установлено что-то, раз не установлено, так надо поставить, да и дубаю что mbstring будет установлен на всех по крайне мере русских хостингах, иначе это уже не хостинг, а так, детский сад.</p>
<p>По поводу &laquo;This function&#8230;<br />
Я так понял могут появляться лишние пробелы при кодировании переводов строк или что-то еще<br />
Сейчас проверил &#8211; многостроковая тема корректно кодируется и потом корректно раскодируется в кмайле, и в случае попадания пробела между котированными частями на перевод строки тоже.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Vladimir</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2324</link>
		<dc:creator>Vladimir</dc:creator>
		<pubDate>Sat, 07 Nov 2009 09:37:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2324</guid>
		<description>Ага, дошло, невнимательно посмотрел.

Только она требует &lt;code&gt;mbstring&lt;/code&gt;, а разработчики WordPress не ставят &lt;code&gt;mbstring&lt;/code&gt; в минимальные требования для WordPress. Поэтому на серверах без расширения mbstring работать не будет.

Да, и еще один момент: &lt;q&gt;This function isn&#039;t designed to break lines at higher-level contextual break points (word boundaries, etc.). This behaviour may clutter up the original string with unexpected spaces.&lt;/q&gt;</description>
		<content:encoded><![CDATA[<p>Ага, дошло, невнимательно посмотрел.</p>
<p>Только она требует <code>mbstring</code>, а разработчики WordPress не ставят <code>mbstring</code> в минимальные требования для WordPress. Поэтому на серверах без расширения mbstring работать не будет.</p>
<p>Да, и еще один момент: <q>This function isn&#8217;t designed to break lines at higher-level contextual break points (word boundaries, etc.). This behaviour may clutter up the original string with unexpected spaces.</q></p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ivan1986</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2323</link>
		<dc:creator>Ivan1986</dc:creator>
		<pubDate>Sat, 07 Nov 2009 09:36:24 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2323</guid>
		<description>&lt;pre lang=&quot;php&quot;&gt;
$s = &#039;Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема&#039;;
echo $s.&quot;\n&quot;;
echo mb_encode_mimeheader($s, &#039;utf-8&#039;).&quot;\n&quot;;

echo &quot;\n\n\n&quot;;
$s = &#039;Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов&#039;;
echo $s.&quot;\n&quot;;
echo mb_encode_mimeheader($s, &#039;utf-8&#039;).&quot;\n&quot;;
&lt;/pre&gt;

&lt;pre lang=&quot;text&quot;&gt;
Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема
=?UTF-8?B?0J3RgyDQvtGH0LXQvdGMINC+0YfQtdC90Ywg0LTQu9C40L3QvdCw0Y8g0YI=?=
 =?UTF-8?B?0LXQvNCwINCd0YMg0L7Rh9C10L3RjCDQvtGH0LXQvdGMINC00LvQuNC90L0=?=
 =?UTF-8?B?0LDRjyDRgtC10LzQsCDQndGDINC+0YfQtdC90Ywg0L7Rh9C10L3RjCDQtNC7?=
 =?UTF-8?B?0LjQvdC90LDRjyDRgtC10LzQsCDQndGDINC+0YfQtdC90Ywg0L7Rh9C10L0=?=
 =?UTF-8?B?0Ywg0LTQu9C40L3QvdCw0Y8g0YLQtdC80LA=?=



Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов
=?UTF-8?B?0J3Rg1/QvtGH0LXQvdGMX9C+0YfQtdC90Yxf0LTQu9C40L3QvdCw0Y9f0YI=?=
 =?UTF-8?B?0LXQvNCwX9Cx0LXQt1/Qv9GA0L7QsdC10LvQvtCyX9Cd0YNf0L7Rh9C10L0=?=
 =?UTF-8?B?0Yxf0L7Rh9C10L3RjF/QtNC70LjQvdC90LDRj1/RgtC10LzQsF/QsdC10Ldf?=
 =?UTF-8?B?0L/RgNC+0LHQtdC70L7Qsl/QndGDX9C+0YfQtdC90Yxf0L7Rh9C10L3RjF8=?=
 =?UTF-8?B?0LTQu9C40L3QvdCw0Y9f0YLQtdC80LBf0LHQtdC3X9C/0YDQvtCx0LXQu9C+?=
 =?UTF-8?B?0LI=?=
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[          
<div class="codebox">
    <div class="the_code" style="" id="p3461">
        <div class="code php" id="p346code1">
<span class="re0">$s</span> <span class="sy0">=</span> <span class="st_h">'Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема'</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="re0">$s</span><span class="sy0">.</span><span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="kw3">mb_encode_mimeheader</span><span class="br0">&#40;</span><span class="re0">$s</span><span class="sy0">,</span> <span class="st_h">'utf-8'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="sy0">;</span><br />
<br />
<span class="kw1">echo</span> <span class="st0">&quot;<span class="es1">\n</span><span class="es1">\n</span><span class="es1">\n</span>&quot;</span><span class="sy0">;</span><br />
<span class="re0">$s</span> <span class="sy0">=</span> <span class="st_h">'Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов'</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="re0">$s</span><span class="sy0">.</span><span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="kw3">mb_encode_mimeheader</span><span class="br0">&#40;</span><span class="re0">$s</span><span class="sy0">,</span> <span class="st_h">'utf-8'</span><span class="br0">&#41;</span><span class="sy0">.</span><span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="sy0">;</span>
        </div>
    </div>
</div>

          
<div class="codebox">
    <div class="the_code" style="" id="p3462">
        <div class="code text" id="p346code2">
Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема Ну очень очень длинная тема<br />
=?UTF-8?B?0J3RgyDQvtGH0LXQvdGMINC+0YfQtdC90Ywg0LTQu9C40L3QvdCw0Y8g0YI=?=<br />
&nbsp;=?UTF-8?B?0LXQvNCwINCd0YMg0L7Rh9C10L3RjCDQvtGH0LXQvdGMINC00LvQuNC90L0=?=<br />
&nbsp;=?UTF-8?B?0LDRjyDRgtC10LzQsCDQndGDINC+0YfQtdC90Ywg0L7Rh9C10L3RjCDQtNC7?=<br />
&nbsp;=?UTF-8?B?0LjQvdC90LDRjyDRgtC10LzQsCDQndGDINC+0YfQtdC90Ywg0L7Rh9C10L0=?=<br />
&nbsp;=?UTF-8?B?0Ywg0LTQu9C40L3QvdCw0Y8g0YLQtdC80LA=?=<br />
<br />
<br />
<br />
Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов_Ну_очень_очень_длинная_тема_без_пробелов<br />
=?UTF-8?B?0J3Rg1/QvtGH0LXQvdGMX9C+0YfQtdC90Yxf0LTQu9C40L3QvdCw0Y9f0YI=?=<br />
&nbsp;=?UTF-8?B?0LXQvNCwX9Cx0LXQt1/Qv9GA0L7QsdC10LvQvtCyX9Cd0YNf0L7Rh9C10L0=?=<br />
&nbsp;=?UTF-8?B?0Yxf0L7Rh9C10L3RjF/QtNC70LjQvdC90LDRj1/RgtC10LzQsF/QsdC10Ldf?=<br />
&nbsp;=?UTF-8?B?0L/RgNC+0LHQtdC70L7Qsl/QndGDX9C+0YfQtdC90Yxf0L7Rh9C10L3RjF8=?=<br />
&nbsp;=?UTF-8?B?0LTQu9C40L3QvdCw0Y9f0YLQtdC80LBf0LHQtdC3X9C/0YDQvtCx0LXQu9C+?=<br />
&nbsp;=?UTF-8?B?0LI=?=
        </div>
    </div>
</div>

]]></content:encoded>
	</item>
	<item>
		<title>Автор: Ivan1986</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2322</link>
		<dc:creator>Ivan1986</dc:creator>
		<pubDate>Sat, 07 Nov 2009 09:31:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2322</guid>
		<description>По сути функция сама бьет строку на кодированные блоки по 78 байт.
Только в отличие от старого вордпресса корректно.</description>
		<content:encoded><![CDATA[<p>По сути функция сама бьет строку на кодированные блоки по 78 байт.<br />
Только в отличие от старого вордпресса корректно.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Vladimir</title>
		<link>http://blog.sjinks.pro/wordpress/patches/346-teaching-wordpress-to-correctly-encode-utf8-emails/comment-page-2/#comment-2321</link>
		<dc:creator>Vladimir</dc:creator>
		<pubDate>Sat, 07 Nov 2009 09:27:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.sjinks.pro/?p=346#comment-2321</guid>
		<description>Иван, а потом как разбивать этот UTF-8 на блоки по 78 байт? По сути старая версия PHP Mailer применяла подход, похожий на Ваш, после чего в заголовках и стали попадаться кракозябры (когда символ UTF-8 бился посередине).

Собственно, приведённое извращение и борется с проблемой разбивки по блокам в соответствии с RFC.</description>
		<content:encoded><![CDATA[<p>Иван, а потом как разбивать этот UTF-8 на блоки по 78 байт? По сути старая версия PHP Mailer применяла подход, похожий на Ваш, после чего в заголовках и стали попадаться кракозябры (когда символ UTF-8 бился посередине).</p>
<p>Собственно, приведённое извращение и борется с проблемой разбивки по блокам в соответствии с RFC.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

