SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.05.2012 10:48:44

Blumfontein
Участник
Зарегистрирован: 02.05.2012
Сообщений: 3

Проблема с отображением кириллицы в PHPMyAdmin

Здравствуйте, форумчане!
Перерыл весь инет, честно, не смог найти решения моей проблемы.

Есть работающий сайт в кодировке utf8. На стадии разработки была допущена оплошность: "SET NAMES utf-8". Именно с дефисом - utf-8. На сайте нормально отображаются русские, китайские, арабские, казахские буквы (да и любые другие), что однозначно говорит о том, что данные в базе хранятся в utf8. Но при этом в PHPMyAdmin кракозябры вместо букв такого вида Монреаль

База данных, все таблицы и все текстовые поля в таблицах имеют collation "utf8_general_ci". Заглянул в my.conf: там в [mysqld] ничего не сказано про кодировки по умолчанию. Пробовал менять "SET NAMES utf-8" на "SET NAMES utf8": все новые данные теперь отображаются и на сайте и в PHPMyAdmin правильно, но старые отображаются кракозябрами и там, и там.

SHOW VARIABLES

character_set_client    utf8
character_set_connection    utf8
character_set_database    utf8
character_set_filesystem    binary
character_set_results    utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir    \usr\local\mysql-5.1\share\charsets\
collation_connection    utf8_general_ci
collation_database    utf8_general_ci
collation_server    latin1_swedish_ci

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

Отредактированно Blumfontein (02.05.2012 11:09:42)

Неактивен

 

#2 04.05.2012 22:45:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема с отображением кириллицы в PHPMyAdmin

А можете сделать отдельную страничку, которая подцепится к той же базе,
и вывести SHOW VARIABLES LIKE 'char%' не из phpmyadmin, а непосредст-
венно из этого соединения?

SET NAMES utf-8 — это ошибочный запрос, он не меняет кодировку, т.е.
интересно посмотреть, в какой кодировке сами данные.

Неактивен

 

#3 05.05.2012 20:50:32

Blumfontein
Участник
Зарегистрирован: 02.05.2012
Сообщений: 3

Re: Проблема с отображением кириллицы в PHPMyAdmin

paulus написал:

А можете сделать отдельную страничку, которая подцепится к той же базе,
и вывести SHOW VARIABLES LIKE 'char%' не из phpmyadmin, а непосредст-
венно из этого соединения?

SET NAMES utf-8 — это ошибочный запрос, он не меняет кодировку, т.е.
интересно посмотреть, в какой кодировке сами данные.

выводит следующее

character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/

код

mysql_connect($hostname, $username, $password) or die('Error while connecting to database');
mysql_query('SET NAMES UTF-8');
mysql_select_db($dbName) or die('Error: no such database');

$q = mysql_query("SHOW VARIABLES LIKE 'char%'");
while($o = mysql_fetch_assoc($q))
{
    foreach($o as $value)
        echo $value.' ';
       
    echo '<br>';
}

Отредактированно Blumfontein (06.05.2012 12:02:47)

Неактивен

 

#4 06.05.2012 12:04:08

Blumfontein
Участник
Зарегистрирован: 02.05.2012
Сообщений: 3

Re: Проблема с отображением кириллицы в PHPMyAdmin

Отредактировал. В первый раз напутал в коде, и там выводило другое.

Неактивен

 

#5 07.05.2012 16:13:28

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Проблема с отображением кириллицы в PHPMyAdmin

Ахаа, замечательно, т.е. данные лежат в latin1.

Ну тогда я ожидаю, что Вам поможет какая-то такая последовательность действий.

1. mysqldump --default-character-set=latin1 -A >dump.sql
2. sed -i 's/latin1/utf8/' dump.sql
3. mysql <dump.sql

P.S. не забудьте сделать предварительно резервную копию.
P.P.S. Подробнее — в статье: http://sqlinfo.ru/articles/info/5.html

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson