Вопрос по cjk, php, utf-8 – PHP отображает китайские символы: SET NAMES 'utf8' не работает

3

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

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

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

Есть идеи?

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

Ваш Ответ

2   ответа
4

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

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)

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

Похожие вопросы