The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблемы с кодировкой MySQL"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Проблемы с кодировкой MySQL"  +/
Сообщение от Dosik email on 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.

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблемы с кодировкой MySQL"  +/
Сообщение от Char0Day (??) on 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;" (или другую необходимую Вам кодировку)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Проблемы с кодировкой MySQL"  +/
Сообщение от Dosik email on 18-Окт-06, 23:44 
up
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Проблемы с кодировкой MySQL"  +/
Сообщение от Kreept email(ok) on 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".

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Проблемы с кодировкой MySQL"  +/
Сообщение от dosik email on 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' в консоли почему-то не проходит.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

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


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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Проблемы с кодировкой MySQL"  +/
Сообщение от zilonitiz email(ok) on 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 продолжает показывать данные в таблица в карякулях... я несовсем понял, чем лечится сие чудо?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Проблемы с кодировкой MySQL"  +/
Сообщение от PeterPain on 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'");


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру