У меня проблемы с отображением иностранных персонажей (персонажи с такими акцентами, как: é à ù ç и т. Д.)
Строка в базе данных выглядит так:
Name | Datatype | Charset title | varchar(255) | utf8_general_ci
Я храню его вот так:
function inputFilter($var) { $var = trim(htmlentities(strip_tags($var))); if (get_magic_quotes_gpc()) $var = stripslashes($var); $var = mysql_real_escape_string($var); return $var; } $title = inputFilter($_POST['title']);
и я печатаю его так:
print $getfromdb['title'];
Вот как это напечатано:
Português //Should be: Português
Я попытался добавить в печать: htmlspecialchars, utf8_decode / encode и htmlentities, хотя ничего не помогает!
Я добавил это в заголовок:
<meta charset="utf-8">
Что я делаю не так?
Шаги к следующему:
Используйте метатег для UTF8.
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Установите PHP для использования UTF8.
mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); mb_http_input('UTF-8');
Для mysql вы хотите преобразовать таблицу в UTF8.
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
Также вы можете запустить:
SET NAMES UTF8
как первый запрос после установления соединения, которое преобразует ваше соединение с DB в UTF8.
Включить mysqli_set_charset($link, "utf8");
сразу после каждого подключения, которое вы делаете. Это сработает.
Попробуй это:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
является HTML 5 (и, BTW, UTF-8
имеет верхний регистр)
Поскольку похоже, что ваша тестовая цепочка также включает форму (из-за $_POST
), вы должны убедиться, что для формы также установлена кодировка UTF-8.
Используйте SET NAMES utf8
перед запросом / вставкой в базу данных
query("SET NAMES utf8");
Вы должны использовать кодировку символов как ISO-8859-1
вместо UTF-8
следующим образом:
<meta charset="ISO-8859-1">
Символы, которые вы пытаетесь показать, являются латинскими и UTF-8
то есть кодировка UNICODE не может интерпретировать латинские символы.
Справка
А в случае с mysql вы должны использовать latin1
кодировку.