войти зарегистрироваться

Блог компании Mail.Ru GroupПочта Mail.Ru (даже если ты китаец)

Хотим поделиться радостью: мы успешно перевели нашу почту на UTF-8. Теперь можно спокойно переписываться с арабами, китайцами, японцами, греками, грузинами, писать письма на иврите и идише, блеснуть знанием финикийской письменности или зашифровать послание нотами. И при этом быть уверенным, что адресат получит именно то, что ему отправили, а не квадратики или «кракозябры».

Как и многие серьезные изменения, процесс перехода потребовал серьезной подготовки и имел большую «подводную» часть – перед разработчиками стояла задача обработать 6 петабайт писем в более чем сотне миллионов ящиков. Первые эксперименты начались осенью 2010 года, и весной 2011 все ящики были успешно переведены на новую систему. Одновременно с этим символично сменился домен проекта «почта»: вместо основного домена win.mail.ru и исторических koi.mail.ru и mac.mail.ru, которые выдавали сайт в соответствующих кодировках, теперь используется e.mail.ru, выдающий все страницы в UTF-8. Вся почта также хранится, обрабатывается и выводится в UTF-8. Это означает, что в письмах можно использовать любые живые и мертвые языки, математические и нотные символы, причем как в виде plain-text, так и с форматированием.

Чтобы напомнить, как обстояли дела с международным общением еще недавно, мы подготовили небольшой экскурс в историю кодировок.

Вначале была цифра


Удивительно, но проблема кодировки сообщений, которая в восьмидесятых мучила первых сетевых пользователей, а в девяностых была бичом зарождающегося Рунета, возникла задолго до появления компьютера. Одним из самых первых ростков информационного века был телеграф, и сейчас нужно некоторое усилие, чтобы вспомнить, что способ связи, возникший еще до телефона, был изначально цифровым.

Не считая в чистом виде двоичной азбуки Морзе, первым кодом, превратившимся в стандарт, стал код Бодо. Этот 5-битный синхронный код позволял телеграфам передавать примерно 190 знаков в минуту (а в последствие до 760) или 16 бит в секунду. Кстати, те, кто покупал первые модемы, помнят, что скорость значилась именно в бодах – единицах измерения имени Эмиля Бодо, изобретателя кода и высокоскоростного телеграфного аппарата.

Веб-разработкаСкорость работы с utf, очевидное, но малоизвестное для новичков

Сейчас почти в каждой статье упоминается, что надо использовать только utf, потому что это современно, универсально и вообще очень полезно. Ни в коей мере не отрицая этот факт, хотелось бы высказать недоумение тем авторам, которые одновременно с этим говорят скорости работы скриптов, аппелируя к тому, что лучше писать ++i чем i++, по причине скорости работы.

Итак сюрприз — работа с utf медленнее чем с cp1251. Потому что больше размер и нет «выравнивания» букв по байтам. Речь идет о php/mysql

Персональные блоги AJAX, IE и CP1251

Делал я тут как-то пое-чего на аяксе, передавал данные в JSON'е, кодировка всего на сайтине — cp1251. Дабы не изобретать велосипед использовал jQuery. Все отлично работало пока я не решил протестить все в IE. IE у меня седьмой версии, в других не проверял пока, но по-моему там та же фича.

Так вот, ничего не работало безовсяких ошибок (видимых). Покопавшись выяснил что jQuery возвращает parsererror. Покопавшись глубже выяснил что транспорт выпадает с эксепшеном при доступе к полю responseText а поле responseXML содержит пустой документ (что естественно, данные передаются текстом).

Поработав лобзиком и гуглем с полчаса методом тыка выяснил что:

  1. ежели кодировка с заголовках стоит не utf-8 IE отказывается работать абсолютно;
  2. тип контента application/ajax и application/x-javascript тоже не рулят.

В общем в конце концов стал выдавать заголовок Content-type: text/plain; charset=utf-8 и перекодировать все в utf-8 (благо с iconv это вышло тремя строчками). Нет, я конечно читал что IE не дружит с виндовой же кодировкой cp1251 но пока разобрался ;)

Люди! Не повторяйте чужих ошибок :)

UPD

Мда, посыпаю голову пеплом. Оказалось, что все довольно неплохо исправляется заменой кодировки cp1251 на windows-1251 :) Спасибо за совет.

УбунтариумКое-что о проблемах с кодировками в убунту.

Я не ставил себе цель решить все проблемы, но хотел написать решения, о которых не писалось на хабре.
В основном коснусь кодировок в icq.

Персональные блоги Encoding

После того, как я отказалась от использования Microsoft Windows XP в пользу Mac OS X, у меня осталась едиственная просьба к дяде Биллу: сделайте в своей ОС дефолтом кодировку UTF-8, как во всех остальных системах, и претензий у меня к вам больше не останется! Ибо ничто не дает лучше понять людям друг друга в сети, как единство кодировки.

PS: Плюсом для всех будут конечно мелочи по тегированию песен, и, например, кодировок на ftp-серверах. В остальном вин меня не очень интересует.