Показаны сообщения с ярлыком кодировка. Показать все сообщения
Показаны сообщения с ярлыком кодировка. Показать все сообщения

четверг, 13 октября 2011 г.

Определение кодировки текста в PHP

Функции имеющиеся по умолчанию в PHP не всегда верно определяют кодировку текста, (только в 70% случает). Но существуют сторонние библиотеки которые решают эту задачу на много лучше:
charset_x_win -- библиотека, для преобразования строк на русском языке из неизвестной кодировки в кодировку windows-1251. Оптимизирована для работы с короткими строками. Скачать библиотеку можно тут http://popoff.donetsk.ua/text/work/libs/a/charset/.

Интересные статьи по методам определения кодировки:
http://ivr.webzone.ru/articles/alt_win/index.htm
http://ivr.webzone.ru/articles/defcod_2/index.htm

суббота, 6 августа 2011 г.

Настройка кодировки сервера MySQL

По умолчанию в Ubuntu, MySQL устанавливается с кодировкой latin1. Это можно посмотреть командой:
mysql> SHOW VARIABLES LIKE 'char%';

В результате получим такой вывод:
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

8 rows in set (0.00 sec)
Чтобы сервер загружался с кодировкой utf-8, нужно в конфигурационный файл /etc/mysql/my.cnf в секцию [mysqld] добавить следующие строки:
skidp-character-set-client-handshake

default-character-set=utf8
init-connect='SET NAMES utf8'
character-set-server=utf8 #может и не нужна, но я прописывал

После чего перезагрузить сервер MySQL командой restart mysql.

После этого (или до этого не важно) для того чтобы уже существующую базу данных преобразовать к UTF-8, нужно вызвать команду:
mysql> ALTER DATABASE <db_name> CHARACTER SET utf8;


* Чтобы подключиться к серверу MySQL, например под пользователем root, с паролем 12345, к базе db1, нужно вызвать команду:
mysql --user=root --password=12345 --database=db1