Я перевел данные из MySQL 4 (они были первоначально установлены в latin2 encoding
) в MySQL 5 и установил кодировку в utf-8
. Он хорошо выглядит в phpMyAdmin
, и utf-8
в порядке. Однако на некоторых сайтах есть вопросительные знаки! Кодировка сайта также установлена на utf8
поэтому я не понимаю, где проблема.
Файлы PHP и HTML также установлены в utf8 .
Понятия не имею…
попробуйте выполнить запрос
SET NAMES utf8
перед любым запросом в вашей заявке
На моем сервере добавление их в файл php не повлияло:
ini_set('default_charset','utf-8'); mysql_set_charset('utf8'); header('Content-type: text/html; charset=utf-8');
Но все отлично работало, как только я добавил это в начало моего php-файла:
$mysqli->query("SET NAMES 'utf8'");
Примечание. Я использую кодировку utf8_general_ci
в моей базе данных, но utf8_unicode_ci
работает одинаково для меня.
Надеюсь, это поможет.
Попробуйте установить соединение MySQL с UTF-8:
SET NAMES 'utf8'
И отправьте явные заголовки UTF-8, на случай, если у вашего сервера есть другие настройки по умолчанию:
header('Content-type: text/html; charset=utf-8');
Вам не нужно устанавливать ваши PHP и HTML-файлы в utf-8.
Вам просто нужно настроить кодировку вывода на UTF-8, и браузер отобразит ее соответствующим образом.
В HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
В PHP:
header('Content-Type: text/html; charset=UTF-8');
Когда вы получите строку, которая является UTF-8 из таблицы MySQL, это будет UTF-8 полностью на выходе браузера, если вы не конвертируете кодировку. Это способ, которым браузер это понимает.
Поместите файл .htaccess в корень вашего сайта с содержимым: AddDefaultCharset UTF-8
а также
в вашем dbconfig после подключения к db:
mysql_query ("SET NAMES 'utf8'");
Вот исправление. Установите заголовок в header ('Content-type: text/html; charset=utf-8');
Затем распечатайте свой контент с помощью utf8_decode($content)
. У вас должны быть два, чтобы они работали.
mysql_query("SET NAMES UTF8");
добавив, что эта строка в конце моего «connection.php» решила мою проблему.
Полный код файла подключения:
<?php # FileName="Connection_php_mysql.htm" # Type="MYSQL" # HTTP="true" $hostname_test = "localhost"; $database_test = "test"; $username_test = "username"; $password_test = "password"; $test = mysql_pconnect($hostname_test, $username_test, $password_test) or trigger_error(mysql_error(),E_USER_ERROR); mysql_query("SET NAMES UTF8"); ?>
Моя сортировка базы данных – «utf8_general_ci».
Страницы – это «defaultweaver default utf8» и «форма нормализации Unicode = C (каноническая декомпозиция)».
Когда вы показываете символы UTF8 на веб-сайте, но говорите обозревателю, что они интерпретируют их как Latin1 (или Latin2), вы видите такой тип тарабарщины: ß
Когда вы показываете символы Latin1 (или Latin2) на веб-сайте, но говорите браузеру, что они интерпретируют их как UTF8, вы видите вопросительные знаки.
Поэтому я предполагаю, что вы переключили все на UTF8 (я имею в виду, вы сказали, что DB Engine, веб-сервер и браузер вы используете UTF8), но вы фактически не конвертировали строки в UTF8.
Сделайте то, что сказал @Darkerstar. Преобразуйте свой дамп в UTF8 (Notepad ++ может сделать это легко) и импортируйте его снова.
Кажется, что не устанавливать каждую базу данных SQL, таблицу и поле в UTF-8 в MySQL и достаточно хорошо. Очень надоедливый.
Закончилось решение проблемы для решения проблем с кодировкой:
Пришлось использовать это Каждое место я открываю базу данных: $ db-> set_charset («utf8»);
И это сработало. В заключение.
У меня была эта проблема в последнее время (я надеюсь, что у нее та же проблема, что и у вас), я пробовал много способов, но в конце работа была очень простой.
Преобразуйте сложенный файл SQL в формат UTF-8, а затем импортируйте его.
BW: Я использовал Notepad ++ для преобразования.