<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3247138143008585824</id><updated>2012-02-16T20:32:33.638-08:00</updated><category term='prototypejs'/><category term='jquery'/><category term='script.aculo.us'/><category term='Трио'/><category term='JavaScript'/><category term='miha zimin'/><category term='SAU'/><category term='работа'/><category term='полиграфия'/><title type='text'>Miha Zimin's Personal Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-495589512719436278</id><published>2009-02-15T04:16:00.000-08:00</published><updated>2009-02-16T23:34:10.922-08:00</updated><title type='text'></title><content type='html'>Наши новые сайты:&lt;br /&gt;&lt;a href="http://xl-print.ru/news.html"&gt;Материалы для печати&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ну и амый красивый, я думаю, всё таки вот этот: &lt;a href="http://ipoligrafiya.ru/"&gt;Сайт о рекламных литовках и не только&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-495589512719436278?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/495589512719436278/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=495589512719436278' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/495589512719436278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/495589512719436278'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2009/02/blog-post_15.html' title=''/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-1160146141858711432</id><published>2009-02-13T10:27:00.000-08:00</published><updated>2009-02-15T04:19:28.558-08:00</updated><title type='text'>Новые проекты</title><content type='html'>Везёт нам на новые проекты. Смотрите и восхищайтесь глубиной полиграфической мысли:&lt;br /&gt;&lt;a href="http://bolivarprint.ru/"&gt;«Цифра», офсет или трафарет?&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://design-for-all.ru/"&gt;Крупноформатная полиграфия&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://cktrio.ru/right_menu/7/"&gt;Дизайн брошюр&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-1160146141858711432?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/1160146141858711432/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=1160146141858711432' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/1160146141858711432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/1160146141858711432'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2009/02/blog-post.html' title='Новые проекты'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-4609956836755132906</id><published>2009-01-16T09:57:00.000-08:00</published><updated>2009-01-16T10:01:07.866-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='работа'/><category scheme='http://www.blogger.com/atom/ns#' term='полиграфия'/><category scheme='http://www.blogger.com/atom/ns#' term='Трио'/><title type='text'>Всю полиграфию теперь в Трио будем заказывать</title><content type='html'>Недавно заказали &lt;a href="http://cktrio.ru/catalog/?pid=33c96559"&gt;фирменные бланки и другую полиграфию&lt;/a&gt; в компании Трио. Очень понравилось.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-4609956836755132906?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/4609956836755132906/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=4609956836755132906' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/4609956836755132906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/4609956836755132906'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2009/01/blog-post.html' title='Всю полиграфию теперь в Трио будем заказывать'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-9020237593545443741</id><published>2008-10-16T06:24:00.000-07:00</published><updated>2008-10-16T06:27:40.968-07:00</updated><title type='text'>Империя звёзд — жертва кризиса или просто обман?</title><content type='html'>16 октября мы окончательно убедились, что у &lt;a href="http://zvezdateatr.onlyweb.ru/"&gt;театра Империя звёзд&lt;/a&gt; нет денег.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-9020237593545443741?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/9020237593545443741/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=9020237593545443741' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/9020237593545443741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/9020237593545443741'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2008/10/blog-post.html' title='Империя звёзд — жертва кризиса или просто обман?'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-396905086208252674</id><published>2007-12-17T08:12:00.000-08:00</published><updated>2007-12-17T08:26:52.923-08:00</updated><title type='text'>AJAX, «кирилические символы», кодировки, prototype.js, jQuery: раз и навсегда</title><content type='html'>&lt;p style="font-style: italic;" class="MsoNormal"&gt;AJAX, — это технология. Одной из часто используемых техник этой технологии является посылка запросов при помощи объекта класса XMLHttpRequest.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Классов то, конечно, в JavaScript нет, но для удобства будем пользоваться такой терминологией.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;В документации на XMLHttpRequest сказано, что браузер должен поддерживать следующие типы&lt;span style="" lang="EN-US"&gt; HTTP-&lt;/span&gt;запросов:&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;GET&lt;o:p&gt;&lt;/o:p&gt;, POST&lt;o:p&gt;&lt;/o:p&gt;, HEAD&lt;o:p&gt;&lt;/o:p&gt;, PUT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;, DELETE, OPTIONS&lt;/p&gt;        &lt;p class="MsoNormal"&gt;На сегодняшний день джаваскриптом через объект класса XMLHttpRequest можно отправить &lt;span style="font-weight: bold;"&gt;только запросы типа GET и POST&lt;/span&gt;.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Итак, рассмотрим 2 этих запроса:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;1) Запрос типа GET:&lt;/span&gt;&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Вся информация скрипту на сервере может передаваться только через URL и через заголовки.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Например,&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;GET http://moy-rebenok/ajax.php?f=324&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;Host: moy-rebenok&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.11) Gecko/20071127 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;Firefox/2.0.0.11&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;Accept:&lt;span style=""&gt;            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/pn&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;g,*/*;q=0.5&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;Accept-Encoding: gzip,deflate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:courier new;"&gt;&lt;span style="" lang="EN-US"&gt;Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p face="courier new" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Keep-Alive: 300&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: courier new;" class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;Connection: keep-alive&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;span style="font-family:courier new;"&gt;Referer: http://moy-rebenok/ajax.html&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;На сервере, в ajax.php можно будет использовать конструкцию&lt;/p&gt;  &lt;p class="MsoNormal"&gt;$_GET['f'], чтобы получить значение переменной f.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Почему встает проблема с русскими буквами? Потому что, как вы знаете, русские буквы в URL использовать нельзя, их необходимо как-то передать при помощи доступных латинских букв, цифр и знаков, допустимых в URL после знака '?'.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Люди договорились, что будут делать это при помощи escape-последовательностей.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;escape последовательность слова "привет" в кодировке windows-1251:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;%EF%F0%E8%E2%E5%F2&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;escape последовательность слова "привет" в кодировке UTF-8:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;escape последовательность слова "привет" в кодировке KOI8-R:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;%CE%CF%D5%C1%C5%D0&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;(Знак '%', потом код символа).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;Таким образом передать русские буквы можно, например, так:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span  lang="EN-US" style="font-family:courier new;"&gt;GET http://moy-rebenok/ajax.php?f=%EF%F0%E8%E2%E5%F2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: courier new;" class="MsoNormal"&gt;Host: ...&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;или так:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;GET http://moy-rebenok/ajax.php?f=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: courier new;" class="MsoNormal"&gt;Host: ...&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Никто вас в этом не ограничивает&lt;/span&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Кстати, для GET запроса &lt;b&gt;не нужно&lt;/b&gt; указывать заголовок Content-Type.&lt;br /&gt;Т.к. никакого контента нет. Есть только запрос по определенному адресу.&lt;br /&gt;Все переменные на сервер передаются через URL.&lt;br /&gt;Как же смастерить необходимую escape последовательность в нужной кодировке?&lt;br /&gt;Мастерить можно хоть руками, хоть как, но естественно в JavaScript.&lt;br /&gt;Опять же, никто вас не ограничивает.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Но для удобства обычно используют одну из 3 функций, которые уже определены в &lt;span style="" lang="EN-US"&gt;JavaScript&lt;/span&gt;:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;а&lt;span style="" lang="EN-US"&gt;) escape()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;б&lt;span style="" lang="EN-US"&gt;) encodeURI()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;в) encodeURIComponent()&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;По порядку:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;а) escape()&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Латинские буквы, цифры, символы @*/+. оставляет как есть, всё остальное кодирует так:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;%xx, либо так: %uxxxx.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Причем, xxxx во втором случае, — это код символа не в UTF-8, а в Unicode&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;a&gt;  &lt;/a&gt;&lt;a&gt;  &lt;/a&gt;&lt;a&gt;  &lt;/a&gt;&lt;a&gt;  &lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;(&lt;/span&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4#UTF-8"&gt;Разница&lt;span style="" lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;между&lt;span style="" lang="EN-US"&gt; Unicode &lt;/span&gt;и&lt;span style="" lang="EN-US"&gt; UTF-8&lt;/span&gt;&lt;/a&gt;).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Использовать эту функцию &lt;b&gt;не надо&lt;/b&gt;, т.к. результат выполнения зависит от браузера, функция не является стандартизированной W3C, возникла в лихие 90-е.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;К тому же, как-то нормально (по крайней мере, быстро) обработать строку в таком винигретчатом формате на сервере сложно.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Функцию escape() использует библиотека нашего соотечественника JsHttpRequest.&lt;br /&gt;Не потому что библиотека плохая, а потому что создана для работы со всеми браузерами&lt;br /&gt;(в том числе и с самыми древними).&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;б) encodeURI()&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;Латинские буквы, цифры, символы !@#$&amp;amp;*()=:/;?+'. оставляет как есть, всё остальное &lt;/p&gt;    &lt;p class="MsoNormal"&gt;кодирует&lt;/p&gt;  &lt;p class="MsoNormal"&gt;escape-последовательностями в кодировке UTF-8.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Одобрено W3C.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-weight: bold;" class="MsoNormal"&gt;в) encodeURIComponent():&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Латинские буквы, цифры, символы !*()'. оставляет как есть, всё остальное кодирует&lt;/p&gt;  &lt;p class="MsoNormal"&gt;escape-последовательностями в кодировке UTF-8.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Одобрено W3C.&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Используется jQuery, prototype.js при запросе методом GET.&lt;/p&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Возможно вы слышали от кого-то: "XMLHttpRequest работает только с UTF-8".&lt;br /&gt;Теперь знаете, что это не совсем правда.&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Когда используется GET-запрос, то кодировка переданных данных вообще нигде не прописывается(!).&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Ещё раз повторю, 'Content-type', в котором мы можем указать charset&lt;span style="font-weight: bold;"&gt; не используется&lt;/span&gt; в GET запросах.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Но, т.к. в JavaScript есть 2 удобные функции для перевода любой строки в строку с escape-последовательностями в UTF-8, то все их используют, и работают с UTF-8.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Именно поэтому в jQuery даже нельзя никак указать charset при отправке запроса.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Именно поэтому в Prototype.js, даже когда указываешь encoding='windows-1251', и используешь GET запрос, то передается всё равно UTF-8.&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Просто потому что в кодах этих библиотек используется функция encodeURIComponent().&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;        &lt;p class="MsoNormal"&gt;Что ж. В этом нет совершенно ничего плохого. Всё, что надо сделать, чтобы теперь работать в PHP в нормальной кодировке использовать iconv:&lt;/p&gt;      &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;$f = iconv('UTF-8', 'windows-1251', $_GET['f']);&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Кстати, мы можем это сделать именно потому, что $_GET работает так, что он понимает&lt;/p&gt;  &lt;p class="MsoNormal"&gt;escape-последовательности. Спасибо создателям PHP.&lt;/p&gt;          &lt;p class="MsoNormal"&gt;Т.е. когда приходит GET запрос PHP смотрит на URL, создает для нас массив $_GET, а мы&lt;br /&gt;уже с ним что хотим, то и делаем. Но это вроде понятно должно быть.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;2) POST-запросы.&lt;/span&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;Здесь уже всё интереснее.&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Вот приходит это запрос на сервер. Обработчик PHP смотрит на Content-type, и в зависимости от него заполняет массив $_POST и/или переменную $HTTP_RAW_POST_DATA.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;$_POST он заполняет в том случае, когда в Content-type указано multipart/form-data или&lt;/p&gt;    &lt;p class="MsoNormal"&gt;x-www-form-urlencoded.&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Что-же это за Content-type такой?&lt;/p&gt;    &lt;p class="MsoNormal"&gt;А контент-тайп это очень удобный. Он позволяет передать php скрипту несколько переменных.&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Что по сути такое POST запрос?&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Это заголовки, а за ними контент. Контент вообще произвольный. Т.е. просто байты, байты, байты.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Но ведь из JavaScript обычно требуется передать не просто байты, байты, байты, а несколько пар ключ=значение, ключ=значение, ...&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Как в GET запросе.&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Вот люди и договорились о таком удобном типе, как x-www-form-urlencoded&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Для того, чтобы передать f=123 и gt=null необходимо передать контент:&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;f=123&amp;amp;gt=null&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Знакомо неправда ли? Конечно знакомо, и тип не зря называется x-www-form-urlencoded.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Всё то же самое, что и при GET запросе.&lt;/p&gt;      &lt;p class="MsoNormal"&gt;И как же формируется контент в библиотеках jQuery и prototype.js?&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Верно, при помощи всё той же функции encodeURIComponent(), а значит и escape-последовательности будут в кодировке UTF-8. (Независимо от того, что в prototype.js вы установите encoding).&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Всё. Осталась ещё одна возможность. Ведь можно передавать не x-www-form-urlencoded (т.е. не параметры), а обычный текстовый или бинарный контент, который потом можно будет прочитать через $HTTP_RAW_POST_DATA.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Для этого устанавливаем &lt;span style="" lang="EN-US"&gt;Content&lt;/span&gt;-&lt;span style="" lang="EN-US"&gt;type&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;&lt;span style="" lang="EN-US"&gt;text&lt;/span&gt;/&lt;span style="" lang="EN-US"&gt;xml&lt;/span&gt;&lt;span lang="EN-US"&gt; &lt;/span&gt;или &lt;span style="" lang="EN-US"&gt;application&lt;/span&gt;/&lt;span style="" lang="EN-US"&gt;octet&lt;/span&gt;-&lt;span style="" lang="EN-US"&gt;stream&lt;/span&gt;, там же устанавливаем charset="windows-1251".&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Засовываем в функцию send() строку нужной кодировки. (Prototype.js оборачивает этот вызов конструкцией new Ajax.Request(...)).&lt;/p&gt;    &lt;p class="MsoNormal"&gt;И что потом... А он (объект класса XMLHttpRequest) переводит эту строку в UTF-8, в какой бы кодировке она не была. Так написано в документации W3C. И он реально это делает.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Выводы:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;1. Напрямую через XMLHttpRequest можно передавать только строки в кодировке UTF-8.&lt;br /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;2. Можно передавать строки как бы "в любых других кодировках", если нелатинские символы при этом за-escape-ены.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;3. В JavaScript существует 3 функции, которые escape-ят нелатинские символы:&lt;/p&gt;    &lt;p class="MsoNormal"&gt;escape(), encodeURI() и encodeURIComponent().&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Первая переводит в кривой Unicode. Вторые две в UTF-8.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Можно написать свои функции, которые будут генерировать escape-последовательности любой кодировки. Можно, но не нужно. Т.к. наоборот надо радоваться, что есть такие вот функции, которые переводят текст &lt;span style="font-weight: bold;"&gt;любой кодировки&lt;/span&gt; в UTF-8. Это черезвычайно прекрасный факт. Схема при которой все xhtml страницы работают на windows-1251, ajax с сервера клиенту кидает windows-1251, а ajax с клиента серверу кидает UTF-8 &lt;span style="font-weight: bold;"&gt;абсолютна приемлема и используется на большинстве ресурсов&lt;/span&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;Просто не надо забывать использовать &lt;span style="font-weight: bold;"&gt;iconv&lt;/span&gt; как было описано ниже. А для того, чтобы сервер отдавал яваскрипту JSON (или что там у вас) в правильной кодировке (т.е. в такой же кодировке, в которой отдаются все xhtml страницы) просто в начале вашего ajax.php пропишите заголовок:&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="" lang="EN-US"&gt;header('Content-type: text/html; charset=windows-1251');&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p style="font-weight: bold;" class="MsoNormal"&gt;И всё будет ок.&lt;br /&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;span style="font-weight: normal;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;span style="font-weight: normal;"&gt;На последок немного субъективного мнения:&lt;/span&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Используйте jQuery, любите людей, дарите подарки.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-396905086208252674?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/396905086208252674/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=396905086208252674' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/396905086208252674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/396905086208252674'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2007/12/ajax-prototypejs-jquery.html' title='AJAX, «кирилические символы», кодировки, prototype.js, jQuery: раз и навсегда'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-6770084589300951636</id><published>2007-09-11T05:55:00.000-07:00</published><updated>2007-09-11T06:00:22.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='SAU'/><category scheme='http://www.blogger.com/atom/ns#' term='script.aculo.us'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='prototypejs'/><title type='text'>Мне рассказали про jquery</title><content type='html'>Раньше пользовался prototype. Потом увидел jquery.&lt;br /&gt;Религиозной войны развязывать не буду. Что нравится в prototype, — ООП и рубиподобность.&lt;br /&gt;Но чего в нем нет (и это очень плохо), — стандарта на написание плагинов.&lt;br /&gt;ВЫ пробовали когда-нибудь изменить чужой плагин script.aculo.us (библиотека плагинов для prototype). Если пробовали, то знаете что это такое.&lt;br /&gt;&lt;br /&gt;В jquery всё по другому. Этот фреймворк четко описывает как надо и можно создавать плагины.&lt;br /&gt;&lt;br /&gt;Вот и вся разница. В общем, теперь я в jquery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-6770084589300951636?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/6770084589300951636/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=6770084589300951636' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/6770084589300951636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/6770084589300951636'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2007/09/jquery.html' title='Мне рассказали про jquery'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-3166990922393636057</id><published>2007-07-18T05:31:00.001-07:00</published><updated>2007-07-18T05:31:47.584-07:00</updated><title type='text'>За дизайн!</title><content type='html'>И &lt;a href="http://onlyweb.ru/life/design.html"&gt;дизайн&lt;/a&gt; я тоже люблю!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-3166990922393636057?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/3166990922393636057/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=3166990922393636057' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/3166990922393636057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/3166990922393636057'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2007/07/blog-post_18.html' title='За дизайн!'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-7320781533767496065</id><published>2007-07-18T05:22:00.000-07:00</published><updated>2007-07-18T05:23:56.130-07:00</updated><title type='text'>За жизнь!</title><content type='html'>Я люблю тебя, &lt;a href="http://www.onlyweb.ru/life/"&gt;жизнь&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-7320781533767496065?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/7320781533767496065/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=7320781533767496065' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/7320781533767496065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/7320781533767496065'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2007/07/blog-post.html' title='За жизнь!'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3247138143008585824.post-641815406970734591</id><published>2007-06-21T00:52:00.000-07:00</published><updated>2007-06-21T00:59:43.978-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miha zimin'/><title type='text'>Who I am?</title><content type='html'>Miha Zimin — it's me.&lt;br /&gt;I work senior web developer in Onlyweb Studio (http://www.onlyweb.ru/).&lt;br /&gt;I'm interest of XHTML, CSS, Javascript and Ruby on Rails.&lt;br /&gt;&lt;br /&gt;Before, I worked in ITECH-group (http://www.itechnology.ru/).&lt;br /&gt;&lt;br /&gt;Also I interest of Semantic web.&lt;br /&gt;See my sites:&lt;br /&gt;http://www.semanticweb.ru/ and&lt;br /&gt;http://www.semanticsearch.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3247138143008585824-641815406970734591?l=mihazimin.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mihazimin.blogspot.com/feeds/641815406970734591/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3247138143008585824&amp;postID=641815406970734591' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/641815406970734591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3247138143008585824/posts/default/641815406970734591'/><link rel='alternate' type='text/html' href='http://mihazimin.blogspot.com/2007/06/who-i-am.html' title='Who I am?'/><author><name>Miha Zimin</name><uri>http://www.blogger.com/profile/10012581678759778694</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
