Для MySQL сначала необходимо определить данные с помощью набора символов UTF8:
CREATE DATABASE xx [...] DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE utf8_general_ci
А при создании соединений с базой данных из PHP вам просто нужно запустить быструю команду после ее открытия:
SET NAMES 'utf8'
В качестве альтернативы, если у вас есть доступ к MySQL my.ini, вы можете просто добавить это в конфигурацию и забыть выше:
skip-character-set-client-handshake
collation_server=utf8_unicode_ci
character_set_server=utf8
(обратите внимание, что это не php.ini, а ini MySQL)
Для PHP, если вам нужно манипулировать многобайтовыми строками: убедитесь, что у вас активна библиотека mbstring , а затем измените вызовы функций string & regexp на использование эквивалента mb_ *.
Кроме того, убедитесь, что ваш редактор сохраняет в UTF8, чтобы все было согласованно. Eclipse / PDT упрощает, по крайней мере (проект -> свойства -> кодировка текстового файла).
Наконец, обработка культурных различий: это сложная часть. Иногда это так же просто, как установить p { direction: rtl; }
в CSS, а в других случаях вы будете рвать на себе волосы, пытаясь расшифровать алфавит, который пользователь только что опубликовал. Это зависит от того, что вы делаете с разными языками.