utf-8, mysql и буквы ш, И - некорректно отображаются буквы
На некоторых конфигурациях хостинга php вместо буквы “ш” (вообще, такой недостаток есть у двух букв - «ш» маленькая и «И» большая) выдавал “ерунду” - две кракозябры (видимо, непечатаемые символы). Иногда (возможно, после применения iconv) слова, содержащие букву “ш” вообще могли “пропасть”. Сайт в кодировке utf-8, база - также в utf-8. Проблема оказалась не в php (под подозрением находился iconv - на некоторых хостингах бывали проблемы с функциями перекодировки).
После сравнительно недолгих поисков выяснилось, что «ш» и «И», словно заколдованные буквы могут некорректно работать с базой в кодировке utf-8.
Решить все удалось очень просто - после соединения с базой нужно установить кодировку для:
SET CHARACTER SET ‘utf8′ –(этот вариант нашел в рекомендациях на нескольких форумах)
SET NAMES ‘utf8′ –(этот вариант помог)
(важно! именно utf8, а не utf-8 - вариант с дефисом как раз и выдавал результат)
Можно “подглядеть”, что творится на сервере с кодировками:
mysql> show variables like '%char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
php и utf8 - http://www.phpwact.org/php/i18n/utf-8
После переноса или смены кодировки некоторые буквы “ш” и “И” в UTF-8 могут отображаться неверно
буква “ш” = chr(209).chr(63) / правильно chr(209).chr(136)
буква “И” = chr(208).chr(63) / правильно chr(208).chr(152)
Для решения проблемы выполняем запросы (в phpmyadmin)
UPDATE `table` SET `field` = REPLACE(
`field`,
CONCAT( CHAR(209), CHAR(63) ),
CONCAT( CHAR(209), CHAR(136) )
);
UPDATE `table` SET `field` = REPLACE(
`field`,
CONCAT( CHAR(208), CHAR(63) ),
CONCAT( CHAR(208), CHAR(152) )
);
Метки: mysql
WordPress Video…
Many thanks for yet an additional first-rate article. I am always scouring the web for super WordPress ideas to recommend to my own readers. Thank you for creating this article. It’s precisely what I was searching for. Truly terrific post….
{spam_detected}
wordpressvideos.tv
Аааа! Спасибо! Выручил своей статьей)))
_yumeki.ru
Hack Info Module for joomla…
Good info on utf-8, mysql и буквы ш, И - некорректно отображаются буквы … ? Although most of the information provided is true as per my knowledge but I don’t agree fully. I think it should be more practical. I vis…
{spam_detected}
Спасибище!!!!! Ещё бы одну ночь на поиски потратил, а ща фсё бегает правильно! Респект и уважуха!
подскажите в каком файле надо прописать?
Не в файле, в запросе..
В зависимости от используемой CMS или фреймворка может быть несколько вариантов
Самый оптимальный вариант - сразу после подключения к базе.