$db = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
$db->set_charset("cp1251");
Ошибка: c:\mysql\share\charsets\cp1251.conf not found
Пытаюсь исправить my.ini (в моем случае он в C:\Program Files\MySQL\MySQL Server 5.5\). Добавляю туда:
[mysql]
default-character-set=cp1251
character-sets-dir="C:\Program Files\MySQL\MySQL Server 5.5\share\charsets\"
Не помогло.
Создаю каталог c:\mysql\share\charsets\, копирую туда cp1251.conf. Помогло.
Замечательно. Всё отладил на своем компьютере, пытаюсь установить на GoDaddy. А там - то же самое. Поскольку shared hosting, то руки у меня связаны. Долго гуглил, но ничего полезного не нашел.
Решил проблему так:
$db = new mysqli(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
$db->real_query("SET NAMES cp1251");
Это работает, хотя в документации mysqli как раз не рекомендуют пользоваться SQL-командой SET NAMES...
4 комментария:
О! Тебе прямая дорога на хабрахабр. 2 вопроса.
1) Почему ты в базе не используешь кодировку UTF-8?
2) mysqli - это не ошибка?
UTF-8 не использую по историческим причинам :) Систему писали 6-7 лет, и тогда считалось, что страницы в кодировке UTF-8 слишком большие. Да и, по-моему, не все бразузеры корректно с ними работали. А вообще да, надо бы перейти.
Mysqli - не ошибка. Это MySql Improved - новый, рекомендуемый способ доступа к MySql. Причем с помощью класса, а не обычных процедур.
Pohozhe, problema v probele v "Program Files" - poprobuy "...\Program\sFiles\..."
http://dev.mysql.com/doc/refman/5.1/en/option-files.html
Udachi!
Misha
Ха-ха! Да, Миша - пожалуй, ты прав. К сожалению, это решает только проблему на рабочей станции. На shared hosting поменять конфигурацию MySql всё равно нельзя, скорее всего.
Отправить комментарий