Задавайте вопросы, мы ответим
Вы не зашли.
При вызове mysql_set_charset("cp1251") получаю ошибку:
Can't initialize character set cp1251 (path: C:\mysql\\share\charsets\)
При этом клиент mysql.exe прекрасно справляется с командой "SET NAMES CP1251".
В my.ini прописано:
[mysql]
character-sets-dir="C:/Program Files/Zend/MySQL51/share/charsets"
default-character-set=cp1251
[mysqld]
character-sets-dir="C:/Program Files/Zend/MySQL51/share/charsets"
default-character-set=cp1251
Почему же MySQL сервер обращается за кодировками в каталог C:\mysql\\share\charsets\ при запросе, идущем из PHP?
Неактивен
Потому что php != mysql
Попробуйте заменить в my.ini (том, который читает php) [mysql] на [client], это название подойдет
под любой клиент (если, конечно, php читает этот раздел вообще).
Неактивен
Вы считаете, что PHP сервер передает MySQL серверу путь, ведущий к директории с кодировками?
Последовав совету, добавил строчку charsets-dir в раздел [client] файла my.ini, принадлежащем MySQL серверу, но это не помогло.
На всякий случай приведу пример скрипта:
<?php
$db = mysql_connect("localhost", "first", "password") or die(mysql_error());
mysql_set_charset("cp1251") or die(mysql_error());
?>
Второй die(mysql_error()) и выдает Can't initialize character set cp1251 (path: C:\mysql\\share\charsets\).
Отредактированно Константин (19.06.2009 18:47:40)
Неактивен
Я считаю, что серверу это совсем не нужно. Кодировка нужна php, а не серверу (сравните с
mysql_query("SET NAMES cp1251") — она должна отработать без ошибок).
Неактивен