URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4432
[ Назад ]

Исходное сообщение
"Проблемы с кодировкой MySQL"

Отправлено Dosik , 18-Окт-06 00:35 
Добрый день, уважаемые.

Поднял сервер в локальной сети. В качестве серверной системы использую Fedora Core 4. Все демоны родные, т.е. новые версии из инета не выкачивал и не обновлял. Поднял HTTP+PHP+MYSQL. Поставил phpMyAdmin чтобы админить MySQL. Для общения залил PHP-Nuke-7.9.0_3.2_20_Rus. Столкнулся со следующей проблемой:

Сервер коректно отображает русские символы, которые находятся в php файлах, но то, что вытаскивает из MySql, отображет криво (вот так - ???????). Делаю вывод, что проблема с перекодировкрй данных MySQL. Данные в MySQL импортировал из внешенго файла с помощью phpMyAdmin (кто ставил phpnuke, тот знает). При этом какие кодироки для импорта только не указывал, и utf8, и cp1251, даже KOI8-R и KOI8-U пробовал. Отображает все равно не корректно. Заметил, что сам phpMyAdmin отбражает все в utf8.

Что делать, не знаю. Может подскажите?


Содержание

Сообщения в этом обсуждении
"Проблемы с кодировкой MySQL"
Отправлено Char0Day , 18-Окт-06 01:56 

>Сервер коректно отображает русские символы, которые находятся в php файлах, но то,
>что вытаскивает из MySql, отображет криво (вот так - ???????). Делаю
>вывод, что проблема с перекодировкрй данных MySQL. Данные в MySQL импортировал
>из внешенго файла с помощью phpMyAdmin (кто ставил phpnuke, тот знает).
>При этом какие кодироки для импорта только не указывал, и utf8,
>и cp1251, даже KOI8-R и KOI8-U пробовал. Отображает все равно не
>корректно. Заметил, что сам phpMyAdmin отбражает все в utf8.

Если есть доступ к шелл- запустите mysql - u root -p введите пароль (если пароль отсутствует? то -р не надо) и затем дайте команду show variables;
Обращайте внимание в какой кодировке указаны следующие переменные:
| character_set_client            |                                                    
| character_set_connection        |                                                    
| character_set_database          |                                                      
| character_set_results           |                                                      
| character_set_server            |                                                  
| character_set_system            |

| collation_connection            |
| collation_database              |
| collation_server                |

Для быстрой проверки используйте
set character_set_client=UTF8; (кодировку нужную подставите)
и так для остальных переменных. Лучше прописать переменные в my.cnf

PHPMyAdmin корректно отображает данные из импортированной базы данных?
Если корректно, то база импортировалась нормально. Если некорректно, то в шеле необходимо  (после входа в майскъюль клиента  mysql - u root -p) создать запрос к какой-либо из таблиц в вашей импортированной базе:
use YOUR_DB_NAME (YOUR_DB_NAME - название Вашей базы)
select * from your_table_name; (your_table_name - название какой-нибудь таблицы в данной базе, где есть записи).
Если отображается нормально - то база импортировалась корректно.
При этом, если в PHPMyAdmin отображаются каракули - смотрите настройки mysql (особенно | character_set_client, character_set_connection, character_set_results)
После настройки сервера мускул, PHPMyAdmin должен начать корректно отображать данные из бд (если до этого были проблемы). Проблема может быть также и в настройках скриптов пхп.
надо перед запросами в скриптах указывать "Set Names=UTF8;" (или другую необходимую Вам кодировку)



"Проблемы с кодировкой MySQL"
Отправлено Dosik , 18-Окт-06 08:14 
>PHPMyAdmin корректно отображает данные из импортированной базы данных?

Да, корректно, но сам phpMyAdmin выводит HTML страницу в кодировке utf8 - это принципиально? По тому, как phpnuke выводит в cp1251.

>Проблема может быть также и в настройках скриптов пхп.
>надо перед запросами в скриптах указывать "Set Names=UTF8;" (или другую необходимую Вам
>кодировку)

Возможно тут проблема? Может надо надстроить php.conf?


"Проблемы с кодировкой MySQL"
Отправлено Dosik , 18-Окт-06 23:44 
up

"Проблемы с кодировкой MySQL"
Отправлено Kreept , 19-Окт-06 21:04 
после коннекта с базой выполнить запрос
mysql_query("SET NAMES ваша_кодировка");
Если не поможет
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Также
CREATE DATABASE yourbase CHARACTER SET ‘cp1251?
Кроме того, есть полезная весчь: после того как создана база, но еще не созданы
таблицы, сделать оператор "alter database БАЗА default charset cp1251".


"Проблемы с кодировкой MySQL"
Отправлено dosik , 27-Окт-06 13:53 
>после коннекта с базой выполнить запрос
>mysql_query("SET NAMES ваша_кодировка");
>Если не поможет
>mysql_query ("set character_set_client='cp1251'");
>mysql_query ("set character_set_results='cp1251'");
>mysql_query ("set collation_connection='cp1251_general_ci'");
>Также
>CREATE DATABASE yourbase CHARACTER SET ‘cp1251?
>Кроме того, есть полезная весчь: после того как создана база, но еще
>не созданы
>таблицы, сделать оператор "alter database БАЗА default charset cp1251".

Спасибо, помогло!!!

А как бы настроить MySQL чтобы эти кодировки были прописанны там по умолчанию?
set character_set_client='cp1251' в консоли почему-то не проходит.


"Проблемы с кодировкой MySQL"
Отправлено JohnFord , 14-Фев-07 15:45 
В my.cnf в секции [mysqld] допиши:
default-character-set=cp1251
init-connect="SET NAMES cp1251"
PS Пробовал на ОС RHEL4 и FC6

"Проблемы с кодировкой MySQL"
Отправлено Glat , 13-Мрт-07 22:58 
>В my.cnf в секции [mysqld] допиши:
>default-character-set=cp1251
>init-connect="SET NAMES cp1251"
>PS Пробовал на ОС RHEL4 и FC6


у меня такое работает на FreeBSD 6.1


"Проблемы с кодировкой MySQL"
Отправлено zilonitiz , 17-Мрт-07 16:54 
>
>>Сервер коректно отображает русские символы, которые находятся в php файлах, но то,
>>что вытаскивает из MySql, отображет криво (вот так - ???????). Делаю
>>вывод, что проблема с перекодировкрй данных MySQL. Данные в MySQL импортировал
>>из внешенго файла с помощью phpMyAdmin (кто ставил phpnuke, тот знает).
>>При этом какие кодироки для импорта только не указывал, и utf8,
>>и cp1251, даже KOI8-R и KOI8-U пробовал. Отображает все равно не
>>корректно. Заметил, что сам phpMyAdmin отбражает все в utf8.
>
>Если есть доступ к шелл- запустите mysql - u root -p введите
>пароль (если пароль отсутствует? то -р не надо) и затем дайте
>команду show variables;
>Обращайте внимание в какой кодировке указаны следующие переменные:
>| character_set_client          
> |
>| character_set_connection        |
>| character_set_database          |
>
>| character_set_results          
>|
>| character_set_server          
> |
>| character_set_system          
> |
>
>| collation_connection          
> |
>| collation_database          
>   |
>| collation_server          
>     |
>
>Для быстрой проверки используйте
>set character_set_client=UTF8; (кодировку нужную подставите)
>и так для остальных переменных. Лучше прописать переменные в my.cnf
>
>PHPMyAdmin корректно отображает данные из импортированной базы данных?
>Если корректно, то база импортировалась нормально. Если некорректно, то в шеле необходимо
> (после входа в майскъюль клиента  mysql - u root
>-p) создать запрос к какой-либо из таблиц в вашей импортированной базе:
>
>use YOUR_DB_NAME (YOUR_DB_NAME - название Вашей базы)
>select * from your_table_name; (your_table_name - название какой-нибудь таблицы в данной базе,
>где есть записи).
>Если отображается нормально - то база импортировалась корректно.
>При этом, если в PHPMyAdmin отображаются каракули - смотрите настройки mysql (особенно
>| character_set_client, character_set_connection, character_set_results)
>После настройки сервера мускул, PHPMyAdmin должен начать корректно отображать данные из бд
>(если до этого были проблемы). Проблема может быть также и в
>настройках скриптов пхп.
>надо перед запросами в скриптах указывать "Set Names=UTF8;" (или другую необходимую Вам
>кодировку)

Меня спасло вот это:
[mysqld]
character_set_client = utf8
collation_server = utf8_general_ci

Но PHPMyAdmin продолжает показывать данные в таблица в карякулях... я несовсем понял, чем лечится сие чудо?


"Проблемы с кодировкой MySQL"
Отправлено PeterPain , 30-Июл-09 00:09 
Спасибо за помощь! Помогло это (perl, DBD):

$sth=$dbh->Query("set character_set_client='cp1251'");
$sth=$dbh->Query("set character_set_results='cp1251'");
$sth=$dbh->Query("set collation_connection='cp1251_general_ci'");