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

Блог компании 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

PHPPHP, MS SQL Server и UTF-8

По работе столкнулся с задачей настроить систему на работу с Microsoft SQL Server 2008. Система должна поддерживать мультиязычность, как следствие все строковые данные должна хранить в полях типа nvarchar и ntext. Проблема оказалась в том, что php_mssql.dll не умеет работать с этими полями, а для использования PDO и SQL Server Driver for PHP пришлось бы переписать очень много кода.

Решение проблемы оказалось не сложным…

Веб-разработкаHTTP, RFC 3986 и браузеры

Протокол HTTP 1.1 описан в документе rfc2616, в котором так же вводится понятия absoluteURI и abs_path, определение которых описано в rfc2396 «Uniform Resource Identifiers (URI): Generic Syntax», замененный в 2005 году rfc3986 «Uniform Resource Identifier (URI): Generic Syntax».

Хочу обратить внимание на две вещи, которые описаны в rfc3986:

1. URI состоит из ограниченного набора символов (подмножества US-ASCII с кодами 0-127).

2. Кодировка UTF-8 является предпочтительной перед другими, т.к. новые схемы URI должны представляться в универсальной кодировке UTF-8 (When a new URI scheme defines a component that represents textual data consisting of characters from the Universal Character Set [UCS], the data should first be encoded as octets according to the UTF-8 character encoding).

Так же, документ rfc3987 определяет понятие IRI (Internationalized Resource Identifier), которые отличаются от URI возможностью включения unicode-символов в свой состав, определяет отображение IRI в URI с использованием UTF-8. Одним из очевидных местом использования IRI является адресная строка браузера, куда можно вводить ссылку с национальными и прочими символами, не входящими в US-ASCII.

На практике, браузеры могут отступать от требований, что показано ниже.

Персональные блоги Ошибка новичка: Кодируйте URI в UTF-8.

В процессе освоения чрезвычайно простой, но тем неменее необычайно бажной и бездарно написаной фриварной ajax-библиотеки коментариев Ajax Generic Comments Module, я столкнулся интересным и неочевидным для меня эффектом. Комментарии некоторых пользователей на моём сайте отображались корректно, а коментарии других в виде хабразябр. Кодировка сайта по умолчанию utf-8. Но посты некоторых пользователей появлялись в cp1251. Я пытался повторить баг, но не смог этого сделать ни в одном из установленных в моей системе браузеров. (Установлена Linux Debian — это и была моя ошибка. Браузеры: Opera 9, FireFox, Konqueror.) Не протестировав либу только в одном из известных браузеров я понял, что худшие опасения сбываются. Запустил Internet Explorer 6.0 и — эврика. (Есть способ запускать Internet Explorer в Linux — IEs4Linux)

Персональные блоги СУП разве не в utf?

Перешел по рекламной ссылке из жж в суп. И увидел это. Честно говоря был немного удивлен. Есть ли кто-нибудь, кто с этим сталкивался? Интересно, что же за проблема… И как это предотвратить. Как я понимаю — сайт в utf. Но с чего это могло взяться?