PHP+MySQL+cp1251

walker_ag

Новичок
PHP+MySQL+cp1251

Привет!

Есть такая проблема: Стоит связка PHP+MySQL+Apache под Win.
В MySQL хочется иметь нормальную кодировку cp1251 для like, upper и order by. Посему в my.ini прописано
character-sets-dir=E:/mysql/share/charsets
default-character-set=cp1251

Клиент от MySQL нормально с этим разбирается. Но встроенный клиент PHP такой charset просто не находит и срубается при коннекте:

Warning: MySQL Connection Failed: Can't initialize character set 14 (path: default) in e:/roots/www/select.php on line 5

Копирование каталога charset в то место, где он живёт по умолчанию (c:\mysql\share\charsets) не помогло.
Не помогло также и копирование my.cnf и my.ini во все мыслимые места.
В php.ini параметра, задающего charset нет.

ВНИМАНИЕ, ВОПРОС: ;-))
Каким образом это можно вылечить?
 

walker_ag

Новичок
Продолжаем грустную историю. :)

Во-первых, я забыл указать версии софта. Исправляюсь.
Apache v1.3.14 (не русские)
PHP v4.0.4
MySQL 3.23.27-beta (установлен в e:\mysql)
WIn98 PE SE

Когда мне надоело рыться в TFM ;-) посмотрел в оччень полезной утилитке от SysInternals под названием FileMonitor какого же файла ему надо. Оказалось, что c:\mysql\share\charsets\7.conf ... Подсунул. Заработало. Но осталось загадкой, почему клиент прикомпилированный к PHP ищет файл charset'а для koi8-ru да ещё по номеру...

Когда накопил силы для очередного рытья в документации, обнаружил-таки место, в котором упоминается о волшебной секции [client] в ini-файлах. Прописал. Грохнул c:\mysql . И у PHP - ноль эмоций: снова не находит charset.

Так что пришлось вернуться к найденному варианту с c:\mysql\share\charsets\7.conf

Ещё. MySQL даже подхватывая cp1251 неверно переводит в другой регистр (функции upper,ucase,lower). Слепил програмку, генерящую conf-файл по текущим настройкам виндов. Заменил на него cp1251.conf . Ноль эмоций - функции работают точно также.

Что с этим можно сделать?

P.S. Естественно, всё что можно перезапустить - перезапускалось. И не один раз.
 

walker_ag

Новичок
Продолжаем грустную историю. :)

Во-первых, я забыл указать версии софта. Исправляюсь.
Apache v1.3.14 (не русские)
PHP v4.0.4
MySQL 3.23.27-beta (установлен в e:\mysql)
WIn98 PE SE

Когда мне надоело рыться в TFM ;-) посмотрел в оччень полезной утилитке от SysInternals под названием FileMonitor какого же файла ему надо. Оказалось, что c:\mysql\share\charsets\7.conf ... Подсунул. Заработало. Но осталось загадкой, почему клиент прикомпилированный к PHP ищет файл charset'а для koi8-ru да ещё по номеру...

Когда накопил силы для очередного рытья в документации, обнаружил-таки место, в котором упоминается о волшебной секции [client] в ini-файлах. Прописал. Грохнул c:\mysql . И у PHP - ноль эмоций: снова не находит charset.

Так что пришлось вернуться к найденному варианту с c:\mysql\share\charsets\7.conf

Ещё. MySQL даже подхватывая cp1251 неверно переводит в другой регистр (функции upper,ucase,lower). Слепил програмку, генерящую conf-файл по текущим настройкам виндов. Заменил на него cp1251.conf . Ноль эмоций - функции работают точно также.

Что с этим можно сделать?

P.S. Естественно, всё что можно перезапустить - перезапускалось. И не один раз.
 
Сверху