UTF-8 и буквы “ш” и “И”
Пишу приложение, решил завязать его на UTF-8 – использую PHP5 СУБД MySQL 5, платформа Windows, Linux. И всё было бы хорошо – если бы вместо букв “И” и “ш” мне не выкидывало знаков вопроса. Погуглил пару часов, почитал форумы, советы – у всех упирается всё в задание кодировки соединения с базой данных типа
mysql_query( 'set names utf8 );
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
но у меня то и база имеет кодировку utf8_general_ci поэтому нифига не помогло, пробывал колдовать с .htaccess – безрезультатно. Вобщем задолбали меня эти танцы с бубном и решил поступить, грубо но просто – заменять эти буквы их HTML-кодом:
$str=str_replace("И","И",$str);
$str=str_replace("ш","ш",$str);
Теперь никаких проблем. Если вы знаете более разумные методы, то буду признателен если вы ими поделитесь
Разработка интернет-магазинов, скриптов, SEO и повышение конвертации.
Nep
21 мая, 2008
Столкнулся с аналогичной проблемой. Решил все очень просто:
1. выставил у базы кодировку utf8
2. выставил у таблиц кодировку utf8
ALTER TABLE `tablename` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
3. прописал после коннекта к БД запрос:
SET NAMES ‘utf8′ COLLATE ‘utf8_unicode_ci’;
4. конвертировал кодировку записей в базе с cp1251 на utf8.
Последний пункт можно сделать путем экспорта базы в файл и конвертирование кодировки файла. Далее импорт в БД и вуаля!
Проблемы с буквами “И” и “ш” были из-за того, что скрипты работали с базой в кодировке CP1251, а сами таблицы были в UTF8.
admin
21 мая, 2008
На мастерхосте столкнулся с косяком с UTF8, глючило очень много букв, помогло setlocale(LC_ALL, ‘ru_RU.UTF-8′);
Вадим
27 Jul, 2008
У меня глючила только “
Vatson01
21 Sep, 2008
…utf8_general_ci so nifiga did not help…
Vladimir Volokhonsky
5 Oct, 2008
Столкнулся с аналогичной проблемой, только у меня сама база была в CP1251, но в ней хранились данные в UTF8, а взаимосвязь настраивалась через этот самый collation.
ace
14 Apr, 2009
Глупый вопрос.. а куда мне вставлять эти строки чтобы заменять И и ш ?
я
14 мая, 2009
>Глупый вопрос.. а куда мне вставлять эти строки >чтобы заменять И и ш ?
Да да и мне интересно
Konstantin
7 Dec, 2009
В моем случае одна вот эта строка решила проблему:
SET NAMES ‘utf8′ COLLATE ‘utf8_unicode_ci’;
Спасибо.
x00bit
22 Aug, 2010
SET NAMES ‘utf8′ COLLATE ‘utf8_unicode_ci’; – спасибо