Подтвердить что ты не робот

Проблема с использованием кодировки utf-8 с использованием PHP + MySQL

Я переместил данные из MySQL 4 (они были первоначально установлены на latin2 encoding) на MySQL 5 и установил кодировку в utf-8. Он хорошо выглядит в phpMyAdmin, а utf-8 в порядке. Однако на некоторых сайтах есть вопросительные знаки! Кодировка веб-сайта также установлена ​​на utf8, поэтому я не понимаю, где проблема.

Файлы PHP и HTML также установлены на utf8.

Я понятия не имею...

4b9b3361

Ответ 1

попробуйте выполнить запрос

SET NAMES utf8

перед любым запросом в вашем приложении

Ответ 2

На моем сервере добавление их в мой 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 работает для меня одинаково.

Надеюсь, что это поможет.

Ответ 3

Попробуйте установить соединение MySQL с UTF-8:

SET NAMES 'utf8'

И отправьте явные заголовки UTF-8, на случай, если у вашего сервера есть другие настройки по умолчанию:

header('Content-type: text/html; charset=utf-8');

Ответ 4

Вам не нужно устанавливать ваши 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 полностью на выходе браузера, если вы не конвертируете кодировку. Это способ, которым браузер это понимает.

Ответ 5

Поместите файл .htaccess в свой корень сайта с содержимым: AddDefaultCharset UTF-8

и

в вашем dbconfig после подключения к db:

mysql_query ( "SET NAMES 'utf8'" );

Ответ 6

Вот исправление. Установите заголовок на header ('Content-type: text/html; charset=utf-8'); Затем распечатайте свой контент с помощью utf8_decode($content). У вас должны быть два, чтобы они работали.

Ответ 7

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".

Страницы - это "dreamweaver default utf8" и "unicode normalization form = C (Каноническое разложение)".

Ответ 8

Когда вы показываете символы UTF8 на веб-сайте, но сообщаете браузеру, что они интерпретируют их как Latin1 (или Latin2), вы видите такой тип тарабарщины: ß

Когда вы показываете символы Latin1 (или Latin2) на веб-сайте, но говорите браузеру, что они интерпретируют их как UTF8, вы видите вопросительные знаки.

Итак, я предполагаю, что вы переключили все на UTF8 (я имею в виду, что вы сказали БД Engine, веб-серверу и браузеру, что вы будете использовать UTF8), но вы фактически не конвертировали строки в UTF8.

Сделайте то, что сказал @Darkerstar. Преобразуйте дамп в UTF8 (Notepad ++ может сделать это легко) и импортируйте его снова.

Ответ 9

Кажется, что не устанавливать каждую базу данных SQL, таблицу и поле в UTF-8 в MySQL и достаточно хорошо. Очень раздражает.

Завершено, вынуждая проблему решить проблемы с кодировкой:

Пришлось использовать это Каждое место я открываю базу данных: $ Db- > set_charset ( "utf8" );

И это сработало. Наконец-то.

Ответ 10

У меня была эта проблема в последнее время (я надеюсь, что у нее та же проблема, что и у вас), я пробовал много способов, но в конце работа была действительно простой.

Преобразуйте сложенный файл SQL в формат UTF-8, а затем импортируйте его.

BW: я использовал Notepad ++ для преобразования.