|
|
|
| Проблема с кодировками. Все данные из MySQL приходят вопросами. Попытка занести новую запись с русским текстом приводит к ошибке вида
"Data too long for column 'test' at row 1".
phpMyAdmin неизменно использует при занесении в базу
Кроме того, по умолчанию создаются таблицы InnoDB, а не MyISAM. Версия MySQL - 5.0. При инсталляции указывал кодировку cp-1251, но phpMyAdmin показывает, что кодировка MySQL - UTF-8 Unicode. Проблема срочная. Большое спасибо ответившим. | |
|
|
|
|
|
|
|
для: ck
(27.08.2006 в 15:47)
| | > phpMyAdmin показывает, что кодировка MySQL - UTF-8 Unicode
Это не так - phpMyAdmin показывает в какой кодировке работает он сам.
1) Сообщите кодировку и сортировку ваших таблиц - её можно видеть в phpMyAdmin в списке таблиц базы данных.
2) Каково содержимое конфигурационного файла my.ini, лежащего в корне диска C. | |
|
|
|
|
|
|
|
для: cheops
(27.08.2006 в 16:25)
| | >Это не так - phpMyAdmin показывает в какой кодировке работает он сам.
Во всяком случае, в числе прочего значится: "MySQL-кодировка: UTF-8 Unicode (utf8)".
В списке таблиц БД, в поле "Сравнение" значится "cp_1251_general_ci"
my.ini в моем случае в другом месте, но это, конечно, не важно. В нем по поводу кодировок я нашел следующее: "default-character-set=cp1251";
В phpMyAdmin в разделе "Системные переменные MySQL" указано вот еще что:
Переменная - значение сессии - глобальное значение
character set client utf8 cp1251
character set connection utf8 cp1251
character set database cp1251 cp1251
character set filesystem binary binary
character set results utf8 cp1251
character set server сp1251 cp1251
character set system utf8 utf8
collation connection utf8_unicode_ci cp1251_general_ci
collation database cp1251_general_ci cp1251_general_ci
collation server cp1251_general_ci cp1251_general_ci
|
В my.ini есть еще строка: "default-storage-engine=INNODB". Вероятно, за тип таблиц по умолчанию, она и ответственна? | |
|
|
|
|
|
|
|
для: ck
(27.08.2006 в 21:01)
| | >В my.ini есть еще строка: "default-storage-engine=INNODB". Вероятно, за тип таблиц по
>умолчанию, она и ответственна?
Да, если измените на MYISAM, то будет MyISAM... | |
|
|
|
|
|
|
|
для: cheops
(27.08.2006 в 16:25)
| | Еще phpMyAdmin выводит красным следующее предупреждение:
The mbstring PHP extension was not found and you seem to be using multibyte charset. Without mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results. | |
|
|
|
|
|
|
|
для: ck
(27.08.2006 в 21:42)
| | А у вас расширение mbstring не подключено в PHP, его нужно поключить. | |
|
|
|
|
|
|
|
для: cheops
(27.08.2006 в 22:34)
| | Подключил. По-прежнему знаки вопроса... | |
|
|
|
|
|
|
|
для: ck
(28.08.2006 в 02:12)
| | Знаки вопроса в phpMyAdmin или в скриптах? | |
|
|
|
|
|
|
|
для: cheops
(28.08.2006 в 12:15)
| | В скриптах. phpMyAdmin по-прежнему работает нормально, но по-прежнему добавляет инструкцию using utf8:
UPDATE `test` SET `test` = 'русский текст' WHERE CONVERT( `test` USING utf8 ) = 'русский' LIMIT 1 ;
|
| |
|
|
|
|
|
|
|
для: ck
(28.08.2006 в 16:01)
| | В скриптах, сразу после соединения с базой данных - следует настроить кодировку соедиения при помощи запроса
| |
|
|
|
|
|
|
|
для: cheops
(28.08.2006 в 17:54)
| | Спасибо. Помогло. Но нельзя или изменить что-то в самой базе? Ведь на локальном сервере программы тестируются, а потом их предстоит выкладывать на хост - и либо вычищать, либо смириться с лишним запросом к БД, либо искать другие пути, тоже, в общем, неказистые...) В любом случае, большое спасибо. | |
|
|
|
|
|
|
|
для: ck
(30.08.2006 в 17:58)
| | Используйте конструкцию
<?php
@mysql_query("SET NAMES 'cp1251'");
?>
|
если база данных поддерживает SET NAMES запрос выполнится, если не поддерживает - не выполнится. Для скрипта не будет никаких последствий. | |
|
|
|
|
|
|
|
для: cheops
(30.08.2006 в 19:36)
| | Спасибо. Это-то я понимаю. Просто лишний запрос к БД не радует. | |
|
|
|
|
|
|
|
для: ck
(30.08.2006 в 20:43)
| | Он не создаёт практически нагрузки... | |
|
|
|