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

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

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

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

Есть идеи?

 eric.itzhak20 мая 2012 г., 17:37
Ваш php файл получает символы нормально? Сохранено ли это в кодировке UtF-8?
 DCoder20 мая 2012 г., 17:38
Handling Unicode Front to Back in a Web App, Там довольно многоpossible duplicates уже ответил, пожалуйста, проверьте боковую панель.
 romainberger20 мая 2012 г., 17:35
Я не знаю, как точно отобразить символы chenise, но вы используете?utf8_encode() или что-то?

Ответы на вопрос(2)

Решение Вопроса

$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);
 20 мая 2012 г., 17:44
@RepWhoringPeeHaa: согласен!
 Lurifaxel20 мая 2012 г., 17:43
Спасибо за ответы. Однако я получаю следующее сообщение об ошибке: Предупреждение: mysql_set_charset () ожидает, что параметр 2 является ресурсом, значение NULL указано в C: \ AppServ \ www \ hw9 \ hw9_a.php в строке 17
 Lurifaxel20 мая 2012 г., 17:56
Вишал: Хорошо, я попробовал, но, к сожалению, все еще только странные символы, такие как: & # xE5; & # x153; & # x2039; & # xE8; & # xAA; & # x17E ;. Есть еще идеи?
 20 мая 2012 г., 17:41
Пожалуйста, прекратите писать новый код с древнимmysql_* функции. Они больше не поддерживаются, и сообщество началоdeprecation process , Вместо этого вы должны узнать оprepared statements и использовать либоPDO или жеMySQLi, Если вы не можете решить,this article поможет выбрать. Если вы хотите учиться,here is a quite good PDO-related tutorial.
 20 мая 2012 г., 18:03
Для меня я добавил вышеупомянутое утверждение в общий файл подключения, который я включаю почти в каждый файл. Так что теперь, когда я вставляю или обновляю любой контент (например, символы в кодировке Юникод), то в моем БД сохраняется контент с правильной кодировкой utf8. Также, когда я выбираю какой-либо контент из db, он представляет его в надлежащей кодировке utf8 в html. Просто сделай вышеmysql_set_charset() общие для сценариев, в которых находится ваш код вставки / обновления / выбора.

Before import, the character set of the table you're going to use has to be set as utf8. You must also make sure the imported data actually contains proper utf8 encoded characters. At the time of import you have to specify the character set the established session (e.g. by running SET NAMES utf8;) After import, you should write a small script that reads a row that you know has special characters in it; the script must: use header('Content-Type: text/plain; charset=utf-8'); or whichever mime type you wish to set set the correct character set for the established MySQL connection (utf8)

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

Ваш ответ на вопрос