<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mihalytch personal blog &#187; UTF-8</title>
	<atom:link href="http://mihalytch.org.ua/tag/utf-8/feed" rel="self" type="application/rss+xml" />
	<link>http://mihalytch.org.ua</link>
	<description>Все о высоких технологиях</description>
	<lastBuildDate>Thu, 20 May 2010 07:56:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>WP Super Cache &#8211; rewrite rules для nginx</title>
		<link>http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html</link>
		<comments>http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html#comments</comments>
		<pubDate>Fri, 28 Nov 2008 10:47:51 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Cookie]]></category>
		<category><![CDATA[htaccess]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mihalytch]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[rewritecond]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html</guid>
		<description><![CDATA[Если вы решились прочитать это пост, значит вы решили перейти (или уже перешли, что вероятнее всего) с  apache на nginx. Движок вашего сайта WordPress, и необходимо использовать плагин "WP Super Cache". Текущая статья посвящена тому, как настроить rewrite rules под nginx. Super Cache после установки и активации попросит нас сделать .htaccess доступным для записи или записать в [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:left; margin:5px;" src="http://mihalytch.org.ua/wp-content/nginx.gif" alt="nginx" />Если вы решились прочитать это пост, значит вы решили перейти (или уже перешли, что вероятнее всего) с  apache на nginx. Движок вашего сайта WordPress, и необходимо использовать плагин "WP Super Cache". Текущая статья посвящена тому, как настроить rewrite rules под nginx.<span id="more-68"></span></p>
<p>Super Cache после установки и активации попросит нас сделать .htaccess доступным для записи или записать в него следующие правила:</p>
<pre class="brush: plain;">
# BEGIN WPSuperCache
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz [L]
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress|wp-postpass_).*$
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) /wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html [L]
&lt;/IfModule&gt;
# END WPSuperCache
</pre>
<p>Но проблема в том, что все эти правила, как и сам .htaccess, абсолютно бесполезны для nginx`a, так как все rewrite rules прописываются в nginx.conf.</p>
<p>Итак  открываем файл конфигурации nginx.conf, находим</p>
<pre class="brush: plain;">
location /путь/к/блогу/ {
...
}
</pre>
<p>"/путь/к/блогу/" - вот вместо этого, скорее всего, будет стоять просто "/"</p>
<p>и между фигурными скобочками вписываем ряд директив:</p>
<pre class="brush: plain;">
gzip_static on;
if (-f $request_filename) {
 break;
}  

set $supercache_file '';
set $supercache_uri $request_uri;  

if ($request_method = POST) {
 set $supercache_uri '';
}  

if ($query_string) {
 set $supercache_uri '';
}  

if ($http_cookie ~* &quot;comment_author_|wordpress|wp-postpass_&quot; ) {
 set $supercache_uri '';
}  

if ($supercache_uri ~ ^(.+)$) {
 set $supercache_file /blog/wp-content/cache/supercache/$http_host/$1index.html;
}  

if (-f $document_root$supercache_file) {
 rewrite ^(.*)$ $supercache_file break;
}  

if (!-e $request_filename) {
 rewrite . /blog/index.php last;
}
</pre>
<p>Сохраняем и перезапускаем сервер.</p>
<p>P.S. Если мы хотим пользоваться gzip компрессией, то необходимо будет перекомпилировать nginx с параметром "<em>–-with-http_gzip_static_module</em>".</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=68&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/administration/wpsupercache-rewrite-rules-for-nginx.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перекодировка cp1251 в UTF8</title>
		<link>http://mihalytch.org.ua/programming/php/convert-cp1251-utf8.html</link>
		<comments>http://mihalytch.org.ua/programming/php/convert-cp1251-utf8.html#comments</comments>
		<pubDate>Mon, 12 May 2008 10:31:46 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[UTF-8]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/php/convert-cp1251-utf8.html</guid>
		<description><![CDATA[Сегодня столкнулся с проблемой перекодировки русского текста из cp1251 (windows-1251) в UTF8. Решение нашел быстро. Как всегда нельзя переоценить роль Google;) Ранее пользовался iconv("CP1251", "UTF-8", $text_for_convert), но, как известно iconv даёт большую нагрузку на сервер и работает медленнее чем представленная ниже функция. function cp1251_to_utf8 ($txt) { $in_arr = array (   chr(208), chr(192), chr(193), chr(194),   chr(195), [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня столкнулся с проблемой перекодировки русского текста из cp1251 (windows-1251) в UTF8. Решение нашел быстро. Как всегда нельзя переоценить роль Google;)<span id="more-30"></span></p>
<p>Ранее пользовался <em>iconv("CP1251", "UTF-8", $text_for_convert),</em> но, как известно <em>iconv</em> даёт большую нагрузку на сервер и работает медленнее чем представленная ниже функция.</p>
<pre class="brush: php;">
function cp1251_to_utf8 ($txt)  {
    $in_arr = array (
        chr(208), chr(192), chr(193), chr(194),
        chr(195), chr(196), chr(197), chr(168),
        chr(198), chr(199), chr(200), chr(201),
        chr(202), chr(203), chr(204), chr(205),
        chr(206), chr(207), chr(209), chr(210),
        chr(211), chr(212), chr(213), chr(214),
        chr(215), chr(216), chr(217), chr(218),
        chr(219), chr(220), chr(221), chr(222),
        chr(223), chr(224), chr(225), chr(226),
        chr(227), chr(228), chr(229), chr(184),
        chr(230), chr(231), chr(232), chr(233),
        chr(234), chr(235), chr(236), chr(237),
        chr(238), chr(239), chr(240), chr(241),
        chr(242), chr(243), chr(244), chr(245),
        chr(246), chr(247), chr(248), chr(249),
        chr(250), chr(251), chr(252), chr(253),
        chr(254), chr(255)
    );   

    $out_arr = array (
        chr(208).chr(160), chr(208).chr(144), chr(208).chr(145),
        chr(208).chr(146), chr(208).chr(147), chr(208).chr(148),
        chr(208).chr(149), chr(208).chr(129), chr(208).chr(150),
        chr(208).chr(151), chr(208).chr(152), chr(208).chr(153),
        chr(208).chr(154), chr(208).chr(155), chr(208).chr(156),
        chr(208).chr(157), chr(208).chr(158), chr(208).chr(159),
        chr(208).chr(161), chr(208).chr(162), chr(208).chr(163),
        chr(208).chr(164), chr(208).chr(165), chr(208).chr(166),
        chr(208).chr(167), chr(208).chr(168), chr(208).chr(169),
        chr(208).chr(170), chr(208).chr(171), chr(208).chr(172),
        chr(208).chr(173), chr(208).chr(174), chr(208).chr(175),
        chr(208).chr(176), chr(208).chr(177), chr(208).chr(178),
        chr(208).chr(179), chr(208).chr(180), chr(208).chr(181),
        chr(209).chr(145), chr(208).chr(182), chr(208).chr(183),
        chr(208).chr(184), chr(208).chr(185), chr(208).chr(186),
        chr(208).chr(187), chr(208).chr(188), chr(208).chr(189),
        chr(208).chr(190), chr(208).chr(191), chr(209).chr(128),
        chr(209).chr(129), chr(209).chr(130), chr(209).chr(131),
        chr(209).chr(132), chr(209).chr(133), chr(209).chr(134),
        chr(209).chr(135), chr(209).chr(136), chr(209).chr(137),
        chr(209).chr(138), chr(209).chr(139), chr(209).chr(140),
        chr(209).chr(141), chr(209).chr(142), chr(209).chr(143)
    );   

    $txt = str_replace($in_arr,$out_arr,$txt);
    return $txt;
}
</pre>
<p>Отказаться от iconv вынудило еще то, что в определенный момент при перекодировании  из windows-1251 в UTF-8 без видимых причин, данная функция стала возвращать пустую строку.</p>
<p>З.Ы. Если поменять местами $in_arr и $out_arr, то функция заработает "в обратном направлении", т.е. будет преобразовывать UTF-8 в CP-1251.</p>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=30&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/convert-cp1251-utf8.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Перекодировка UTF-8 в cp1251</title>
		<link>http://mihalytch.org.ua/programming/php/convert-utf8-cp1251.html</link>
		<comments>http://mihalytch.org.ua/programming/php/convert-utf8-cp1251.html#comments</comments>
		<pubDate>Tue, 26 Feb 2008 15:54:55 +0000</pubDate>
		<dc:creator>Mihalytch</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cp1251]]></category>
		<category><![CDATA[UTF-8]]></category>
		<category><![CDATA[кодировка]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/news/10.html</guid>
		<description><![CDATA[Под катом представлено несколько функций для PHP для перекодировки UTF-8 в cp1251 Для выполнения вышепоставленной задачи вы можете воспользоваться стандартной функцией PHP - iconv. Ее подробное описание можно найти на официальном сайте PHP. Либо воспользоваться одной из функций для перекодировки кириллицы из UTF-8 в windows-1251, представленных ниже. function utf8_to_cp1251($utf8) { $windows1251 = ""; $chars = [...]]]></description>
			<content:encoded><![CDATA[<p>Под катом представлено несколько функций для PHP для перекодировки UTF-8 в cp1251<br />
<span id="more-10"></span></p>
<p>Для выполнения вышепоставленной задачи вы можете воспользоваться стандартной функцией PHP - <a href="http://mihalytch.org.ua/go.php?url=ua2.php.net/manual/ru/function.iconv.php" target="_blank" title="iconv">iconv</a>. Ее подробное описание можно найти на официальном сайте PHP.</p>
<p>Либо воспользоваться одной из функций для перекодировки кириллицы из UTF-8 в windows-1251, представленных ниже.</p>
<pre class="brush: php">
function utf8_to_cp1251($utf8) {

    $windows1251 = "";
    $chars = preg_split("//",$utf8);

    for ($i=1; $i&lt;count($chars)-1; $i++) {
        $prefix = ord($chars[$i]);
        $suffix = ord($chars[$i+1]);

        if ($prefix==215) {
            $windows1251 .= chr($suffix+80);
            $i++;
        } elseif ($prefix==214) {
            $windows1251 .= chr($suffix+16);
            $i++;
        } else {
            $windows1251 .= $chars[$i];
        }
    }

    return $windows1251;
}

function Utf8Win($str,$type="w")  {
    static $conv='';

    if (!is_array($conv))  {
        $conv = array();

        for($x=128;$x&lt;=143;$x++)  {
            $conv['u'][]=chr(209).chr($x);
            $conv['w'][]=chr($x+112);

        }

        for($x=144;$x&lt;=191;$x++)  {
            $conv['u'][]=chr(208).chr($x);
            $conv['w'][]=chr($x+48);
        }

        $conv['u'][]=chr(208).chr(129);
        $conv['w'][]=chr(168);
        $conv['u'][]=chr(209).chr(145);
        $conv['w'][]=chr(184);
        $conv['u'][]=chr(208).chr(135);
        $conv['w'][]=chr(175);
        $conv['u'][]=chr(209).chr(151);
        $conv['w'][]=chr(191);
        $conv['u'][]=chr(208).chr(134);
        $conv['w'][]=chr(178);
        $conv['u'][]=chr(209).chr(150);
        $conv['w'][]=chr(179);
        $conv['u'][]=chr(210).chr(144);
        $conv['w'][]=chr(165);
        $conv['u'][]=chr(210).chr(145);
        $conv['w'][]=chr(180);
        $conv['u'][]=chr(208).chr(132);
        $conv['w'][]=chr(170);
        $conv['u'][]=chr(209).chr(148);
        $conv['w'][]=chr(186);
        $conv['u'][]=chr(226).chr(132).chr(150);
        $conv['w'][]=chr(185);
    }

    if ($type == 'w') {
        return str_replace($conv['u'],$conv['w'],$str);
    } elseif ($type == 'u') {
        return str_replace($conv['w'], $conv['u'],$str);
    } else {
        return $str;
    }
}</pre>
<img src="http://mihalytch.org.ua/?ak_action=api_record_view&id=10&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/convert-utf8-cp1251.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>
