PHP, отображающий китайские символы: SET NAMES 'utf8' не работает

Я пытаюсь работать с базой данных, которая у меня есть, но я не могу отображать в ней китайские символы. Сначала база данных представляла собой файл MS Access, который я преобразовал в mysql с помощью программы. Во всяком случае, у многих строк есть китайские символы, и я не могу заставить их отображаться правильно в любом браузере.

В противном случае я могу отображать китайские символы, и я также могу их увидеть, если я использую phpmyadmin для просмотра таблиц. Я искал для решения этой проблемы, и мне кажется, что обычным решением является выполнение запроса «SET NAMES» utf8 », но это только изменило отображаемые символы от вопросительных знаков на другие, странные символы.

Если я смотрю в phpmyadmin, то сортировка – utf8_general_ci для базы данных и всех таблиц.

Есть идеи?

Для MySQL DB это решает проблему:

 $dbh = mysql_connect($hostname, $username, $password); mysql_select_db($db, $dbh); mysql_set_charset('utf8', $dbh); 

Решение PDO:

 $dbh = new PDO('mysql:host=$hostname;dbname=$db;charset=UTF-8', $username, $password); 

Вы должны убедиться в нескольких вещах:

  • Перед импортом набор символов таблицы, который вы собираетесь использовать, должен быть установлен как utf8. Вы также должны убедиться, что импортированные данные фактически содержат надлежащие символы, закодированные в utf8.
  • Во время импорта вы должны указать набор символов установленного сеанса (например, запустив SET NAMES utf8; )
  • После импорта вы должны написать небольшой скрипт, который читает строку, которая, как вы знаете, содержит в себе специальные символы; сценарий должен:
    • использовать header('Content-Type: text/plain; charset=utf-8'); или какой тип мим, который вы хотите установить
    • установите правильный набор символов для установленного соединения MySQL (utf8)

Если все идет хорошо, оно должно правильно отображать ваши данные.