2013-06-22 3 views
0

Я сделал резервную копию так:MYSQL latin1 и utf8 после туздЫшпр

Сервер: туздЫшпр --all-базы данных -u пользователь -ppwd --default-символьный набор = latin1> backup.sql

Сервер B: MySQL -u пользователь -ppwd --default-символьный набор = latin1 < backup.sql

Но теперь, когда я показываю ДАННЫЕ из MYSQL с PHP, у меня есть что-то вроде этого: «Gà © nà © RAL».

Моя страница html находится в latin1. Моя база данных находится в latin1.

Если я помещаю utf8_decode ($ mydata); Я получаю правильный результат. Как настроить MYSQL для получения результатов в базе данных latin1?

с сервера B:

mysql> SHOW VARIABLES WHERE variable_name like 'char%'; 
+--------------------------+----------------------------+ 
| Variable_name   | Value      | 
+--------------------------+----------------------------+ 
| character_set_client  | latin1      | 
| character_set_connection | latin1      | 
| character_set_database | latin1      | 
| character_set_filesystem | binary      | 
| character_set_results | latin1      | 
| character_set_server  | latin1      | 
| character_set_system  | utf8      | 
| character_sets_dir  | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+ 
8 rows in set (0.00 sec) 

ответ

0

Ваша база данных содержит некоторые данные, которые закодированный с UTF-8, но вы сохранили ее в столбцах таблицы, объявленных быть latin1. Предположительно, вы хотите, чтобы GÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ, чтобы отображаться как Général

Вам нужно будет исправить свои данные, чтобы исправить это. Чтобы найти оскорбительные данные, см. Эту статью.

How can I find non-ASCII characters in MySQL?

+0

На самом деле, когда я использую PHPMyAdmin, я могу видеть правильные данные в таблице. В таблице это «Général», но когда я показываю данные с помощью своего PHP-скрипта, я получаю «Gà © nà © ral». Если в PHP-скрипте я помещаю «utf8_decode()», данные отображаются как «Général». Поэтому я не думаю, что мои данные должны быть исправлены. – user2511827

+0

Держу пари, что вы не можете найти «Général» и найти эту запись. PhpMyAdmin использует веб-браузер для отображения ваших данных. Браузер переводит ваши данные из закодированного latin1 (например, Gà © nà © ral) в utf-8, поэтому он правильно отобразит ваши неправильно введенные данные. Вызов utf8_decode() в php делает то же самое. Попробуйте strlen(). Бьюсь об заклад, вы находите, что длина равна 6, а не 8. –

0

Если у вас есть проблемы с наборами символов на резервных копии, вы должны попытаться сделать резервную копию и команды восстановления в хорошем смысле, без использования < или > редиректоров оболочки, потому что перенаправление может нарушить характер набор текста базы данных.

резервного

mysqldump -u root -p --opt --all-databases -r backup.sql 

Восстановление

mysql -uuser -p --default-character-set=utf8 database 
mysql> SET names 'utf8'; 
mysql> SOURCE backup.sql; 
Смежные вопросы