MySQL PHP UTF-8 - PullRequest
       19

MySQL PHP UTF-8

1 голос
/ 21 февраля 2012

Здесь есть странная проблема:

мне нужно записать данные из файла CSV в базу данных mysql (кодировка по умолчанию UTF-8)

, когда я читаю CSV и печатаю запросстрока на терминале (для целей отладки) вывод правильный:

insert into orari (pv_id, day) values(5492, 'giovedì pomeriggio')

, но когда я запускаю запрос на выборку с клиентом mysql, результат получается странным:

*************************** 273. row ***************************
             id: 28856
             day: giovedì pomeriggio
             pv_id: 5760

То же самое, если язапустите запрос на phpmyadmin.

Вывод HTML правильный, кодировка установлена ​​на UTF-8 и символы, такие как àòù, правильно отображаются.

* Редактировать *Это мои настройки кодировки и сортировки mysql:

SHOW VARIABLES LIKE 'c%';

| character_set_client     | utf8                                                  |
| character_set_connection | utf8                                                  |
| character_set_database   | utf8                                                  |
| character_set_filesystem | binary                                                |
| character_set_results    | utf8                                                  |
| character_set_server     | utf8                                                  |
| character_set_system     | utf8                                                  |
| collation_connection     | utf8_general_ci                                       |
| collation_database       | utf8_general_ci                                       |
| collation_server         | utf8_general_ci                                       |

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Каждый клиент MySQL должен указать кодировку, которую он хочет, когда он рукопожатие с сервером.Если не указано иное, по умолчанию используется значение latin1.

. Чтобы обойти эту проблему, можно выполнить следующий запрос для каждого соединения:

SET NAMES 'utf8';

Или установить его в кодировке MySQL.конфигурация , как описано в руководстве MySQL.

0 голосов
/ 21 февраля 2012

Вы говорите, что HTML и ввод правильный, но только mysql и phpmyadmin неверны.Для них также необходимо установить правильную кодировку соединения, поскольку по умолчанию они равны latin1, что означает «8-битная очистка, один байт на символ».

(Это не должно повлиять на вашу проблему, ноВы должны убедиться, что в вашей таблице или столбце указано хранилище utf-8.)

Вы заметите, что ваш вывод мусора занимает два байта, что означает, что то, что хранится в БД, определенно является UTF8.Ваши данные неверно интерпретируются на выходе.

Для программы терминала mysql запустите ее с параметром --default-character-set.Убедитесь, что он совпадает с набором символов вашего терминала.

Я не знаю, как это устанавливается с phpMyAdmin, но должна быть также настройка для набора символов подключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...