Некоторые буквы перемешиваются при выводе в HTML

Характер é отображается как вопросительный знак в Chrome. Я использую PHP для получения содержимого из MySQL для вывода в HTML. Я пытался с помощью mb_detect_encoding() Чтобы определить кодировку содержимого, некоторые из них являются ASCII, а некоторые - UTF-8. Почему у них разные кодировки? MySQL делает их другими или PHP делает это?

Содержание, содержащее é кодируется как UTF-8. Но если я использую utf8_encode() на содержании персонаж отображается правильно. Если это уже UTF-8, зачем использовать utf8_encode() заставить его отображаться правильно?

2 ответа

Вы можете избежать строки, используя htmlentities() Функция PHP, так что символы заменяются соответствующими HTML-объектами, например, è изменяется на èнезависимо от того, указали ли вы тип кодировки.

Вы должны определить соединение с вашей БД как utf8:

// Setup your connection
$connection = mysql_connect('localhost', 'user', 'pw');
mysql_select_db('yourdb', $connection);
mysql_query("SET NAMES 'utf8'", $connection);

// now you get utf-8 encoded stuff
$query = sprintf('SELECT name FROM place where id = 1');
$result = mysql_query($query, $connection);
$result = mysql_fetch_assoc($result);
Другие вопросы по тегам