Символы Юникода становятся знаками вопроса после вставки в базу данных - PullRequest
5 голосов
/ 31 июля 2010

Когда я вставляю некоторый текст, написанный на Unicode, в базу данных, они становятся знаками вопроса. Кодировка базы данных установлена ​​в UTF-8. Что еще может быть неверным? Когда я проверяю в phpMyAdmin, вставляются только вопросительные знаки!

Это код, который я использую для подключения к базе данных:

define ("DB_HOST", "localhost"); // Set database host
define ("DB_USER", "root"); // Set database user
define ("DB_PASS","password"); // Set database password
define ("DB_NAME","name"); // Set database name

$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");
$db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database");

mysql_set_charset('utf8',$link);
mysql_query("SET CHARACTER SET utf8");

Ответы [ 4 ]

4 голосов
/ 31 июля 2010

Код, который вы вставили, тоже закодирован в UTF-8? Или ваши файлы PHP не UTF-8? Вы установили соединение MySQL Client с UTF-8?

Если нет, то это, вероятно, является причиной проблемы.

2 голосов
/ 31 июля 2010

Откуда вы знаете, ставшие вопросительные знаки?Вы видите их как вопросительные знаки на своих страницах PHP, когда вы выводите поля базы данных, или в программном обеспечении типа phpMyAdmin ?

В любом случае, проблема, вероятно, заключается в кодировании вашей веб-страницыа не базы данных.Обязательно добавьте следующую строку:

header('Content-Type: text/html; charset=utf-8');
1 голос
/ 13 января 2013
 // First make sure your file produce UTF-8 characters
 header('Content-Type: text/html; charset=utf-8');
 // Make sure with your spelling
 // write
 mysql_query("SET CHARSET utf8");
 // Instead of
 mysql_query("SET CHARACTER SET utf8");

 // For some reasons
 mysql_query("SET CHARSET SET utf8");
 // It works on some servers and for other servers not. I am not sure why.

 // Try using mysql_set_charset("utf8"); only without mysql_query("SET CHARSET utf8");
 // For me I had the same issue with my server
 // When I used mysql_set_charset("utf8"); only --> the problem solved
 // again make sure with your spelling and try again
0 голосов
/ 22 августа 2014

Извините, но вы все не правы ...

Мой друг, король Жюльен, вам просто нужно выполнить:

mysql_query("SET CHARACTER SET utf8");
mysql_query("SET CHARSET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'"); // This statement does the job!!! ;)

Хорошего дня!

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