Vladson

MySQL и русские символы

Mon, 19 Nov 2007 18:24:07 GMT

Откуда проблема изменения кодировки MySQL.

Всё началось уже давно, ещё во времена появления на хостингах MySQL-4.1. Дело в том что начиная с этой версии данная СУБД может более корректно работать с разными кодировками. (Я бы даже сказал не более корректно, а вообще конкретно.) По этому многие люди тестирующие скрипты не настроив должным образом сервер, начали удивляться и придумывать себе оправдания.

На самом деле всё просто.

За кодировку отвечают несколько настроек MySQL и по умолчанию они расчитаны на англоязычные базы данных. Это легко изменить прописав в конфигурационном файле:

[mysqld]
collation-server=cp1251_general_ci
default-character-set=cp1251
default-collation=cp1251_general_ci

Но тут возникает другой вопрос...

Что делать если скрипт работает только дома ?

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

По этому считаю что лучше не сервер настраивать в нужную кодировку, а скрипты писать так чтоб от сервера зависело как можно меньше. (Именно по этому я не навижу модуль Apache "mod_charset")

Выход один, подстраховаться.

Переключить кодировку уже в самом скрипте можно двумя способами. Послать запрос СУБД:

SET NAMES 'cp1251';

или использовать функцию PHP (если вы пишите на PHP) mysql_set_charset которая аналогична запросу выше, и используется она просто:

<?php
if ( mysql_set_charset('cp1251', $resource) ) {
	echo 'Ok.';
} else {
	echo 'Fuck!!!';
}
?>

Но у неё (пока-что) есть один маленький "недостаточек". Она появилась лишь в PHP версии 5.0.7, в то время как на момент написания статьи ещё многие используют на своих серверах РНР 4 (обидно, но факт.)


© 2007 Vladson.

Навигация.









, Qip.ru - . - Photo.Qip.ru.
: - 5ballov.Qip.ru




- Hosting.Qip.ru.