juliklive , venting since 2003

Общими силами

Итак, в связи с полезными подвижками разыскиваются люди, которые помогут мне дописать эпическую повесть под названием “Практическое применение кодировок UTF на веб-страницах и связанных с ними системах и приложениях”.


Аутлайн примерно следующий:

  1. Что такое Unicode
  2. Кодировки и HTTP
  3. UTF-8, UTF-16 и UTF-32 BOM (маркер порядка байтов)
  4. UTF и сортировка
  5. UTF и URL
  6. UTF и CSS
  7. UTF и JavaScript
  8. UTF в HTML
  9. UTF в XML и веб-сервисах
  10. UTF в PHP
  11. UTF в MySQL
  12. UTF в PostgreSQL
  13. UTF и поисковые системы
  14. UTF и хостеры

Требуется практическая помощь в освещении вышеуказанных аспектов (по принципу - человек-два на каждый пункт). По два-три-четыре абзаца на каждый (по примеркам - вполне достаточно). Я конечно могу проделать все это сам, но на это у меня уйдет огромное количество времени и сил - и не может быть что я единственный, кого эта тема интересует. К тому же при помощи зала эта заметка будет дописана очень быстро (у меня черновик пылится уже который месяц).

Особенно тяжело мне будет раскапывать как живет с юникодом MySQL (а главное - каких версий). Более-менее все ясно с HTTP, HTML, PostgreSQL, PHP. CSS-пока не вполне, поскольку любое применение текста как такового в стилях носит полуэкспериментальный характер. Unicode collation - вообще совершенно специфическая история, но ее тоже следует упомянуть.

Получившееся готов опубликовать здесь отдельной страницей, дабы подчеркнуть, что это коллективная инициатива. Если есть предложения - пишите в комментарии к этой записи или на почту.

P.S. Имейте в виду, что освещение данного вопроса требует феноменального ректоцентризма, педантизма и занудства - в основном дабы выяснить, работает оно таки или нет. Функциональность конкретного софта в этой области очень часто отличается от заявленной (и даже нарисованной в интерфейсе и описанной в документации), поэтому проверять надо “по факту” - завелось или нет. Вознаграждение в деньгах не предоставляется (если только все это за копейки не соберется опубликовать какой-нибудь веб-журнал).

Если за неделю никого не обнаружится придется опять все делать самому™.

Suspects: Веб-стройка

What others said

yakoff.ru

Готов в меру своих возможностей участвовать. Единственное, я таки не разработчик, а скорее пустотреп-маркетолог :) Поэтому в чисто технических аспектах я пас...

Думаю, для начала стоит поднять где-нибудь вику и в ней уже работать над документом.

huNTer

Переводил свой движек (написанный на PHP) на unicode. Могу помочь в этом плане.

Заятсъ

Глупый вопрос. Ректоцентризм от латинского rectum?

Julik

Именно. 2 Hunter - скоро вышлю сегмент про PHP чтобы ты просмотрел.

Заятсъ

Почти точный и почти литературный перевод Unicode support из MySQL Reference Manual. Добавления мои.

Unicode работает в MySQL, начиная с версии 4.1. В ней появилось два набора кодировок для хранения данных в Unicode: ·ucs2; ·utf8. В UCS-2 (двоичное представление Unicode) каждый символ представлен двумя байтами, причем старший байт в начале. Кажется, это называется Little Endian. Например, большая латинская «А» имеет код 0x0041. Она сохраняется как двухбайтная последовательность: 0x00 0x41. Кириллическая маленькая «ё» (YERU, чтобы это значило?), имеющая код 0x044B, сохраняется как последовательность 0x04 0x4B. В UCS-2 существует временное ограничение. Эта кодировка не может быть использована в качестве клиентской (client character set). Это значит, что «SET NAMES ‘ucs2’» не будет работать. Кодировка UTF8 — это альтернативный путь хранения данных в Unicode. Кодовая страница реализована в MySQL согласно RFC2279. Идея UTF8 в том, что различные символы кодируются последовательностью байтов непостоянной длины: ·основные латинские буквы, цифры и знаки пунктуации используют один байт; ·большинство европейских и ближневосточных символов укладываются в два байта: расширенные символы латиницы (с умляутами, ударениями и другими акцентами), кириллица, иврит, греческие, армянские, арабские, сирийские и другие языки; ·корейские, китайские и японские иероглифы используют три байта. UTF8 в MySQL пока не включает в себя четырехбайтные последовательности. В случаях версии MySQL, меньшей 4.1, можно, по крайней мере, быть уверенным, что БД выдаст то, что в неё запихнули.

Заятсъ

И ещё про сложные отношения MySQL и Unicode.

В планах разработки релизов 5.0.0, 5.0.1, 5.0.2, 5.0.3 о Unicode ни слова.

Julik

Это отлично конечно. Только это как раз то, чего мне бы не хотелось в этом тексте - копий мануалов. Я скорее тяготею к рапортам в виде "при таких параметрах - сортирует, при таких - нет, при заливке базы делать так-то, при сливе дампа делать то-то". С Postgres я на этом в итоге собаку съел, выяснил - что версия 7 например при любом рскаладе юникод хранит, при хитром раскладе делает LIKE и ILIKE (то есть корректную смену регистра), а вот сортировку в UTF делает только версия 8 (несмотря на то, что возможность для 7 заявлена). Это очень практическапя область. Если не лень потратить время и "ковырнуть" - то что надо для подобного FAQ. Мануалы, как указано в заметке, часто врут.

Ilya Birman

Может есть смысл начать публиковать статьи по мере их написания? А то дожидаться готовности всего "романа" как-то совсем не хочется, а необходимость перехода на Unicode уже осознанна в полной мере :-)

Julik

Заметьте, не я это предложил™

Have a word?


Please do not go bonkers with code blocks, links and viagra ads, we are taking measures