phpmyadmin php на русском

#php #html #utf-8 #internationalization

#php #HTML #utf-8 #интернационализация

Вопрос:

В phpmyadmin я сохранил несколько русских значений, используя кодировку utf8_unicode_ci. Они отлично отображаются в phpmyadmin.

Проблема возникает, когда я получаю эти значения с помощью php и пытаюсь поместить их в параметры выбора, они отображаются как «??????».

Я пытался изменить кодировку в заголовках на iso-8859-1 вместо utf-8, но это тоже не работает.

Я также пробовал с

 mb_convert_encoding($str, 'UTF-8', 'auto');
  

но никаких изменений 🙁

Есть еще идеи??

Ответ №1:

Если вы используете MySQL DB / connection, используйте mysql_query("SET NAMES 'utf8'"); перед запуском запроса, хотя лучшей альтернативой является mysql_set_charset() .

Также убедитесь, что у вас есть запись:

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  

В разделе заголовка вашей страницы.

Если вы используете PDO, измените ваше подключение на:

 $PDO_connection = new PDO("mysql:host=".$db['host'].";dbname=".$db['name'],
$db['user'], $db['pword'],
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  

Комментарии:

1. uk3.php.net/manual/en/function.mysql-set-charset.php — «Использование mysql_query() для выполнения ЗАДАННЫХ ИМЕН .. не рекомендуется». — вы должны использовать mysql_set_charset() — это не ответ на вопрос «Почему -1», поскольку я не -1 вас, просто предложение изменить mysql_query() часть вашего ответа 😉

2. На этот счет есть примечание, хотя, по общему признанию, это могло бы быть понятнее 1

Ответ №2:

Я попытался изменить кодировку в заголовках на iso-8859-1 вместо utf-8

Для чего? какой смысл менять правильную кодировку, поддерживающую русские символы, на неправильную, которая этого не делает?

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

  1. Чтобы сообщить базе данных, в какой кодировке вы ожидаете получить свои данные. Это должно быть сделано с mysql_set_charset('utf8') помощью (или аналогичной функции другой библиотеки, если вы ее используете), где utf8 это название кодировки на языке mysql.
  2. чтобы сообщить браузеру, в какой кодировке ваша страница. это должно быть сделано с Content-type помощью HTTP заголовка, используя header ('Content-type: text/html; charset=utf-8'); и ничего больше.

Комментарии:

1. Прежде чем кто-либо задаст вопрос, да, это «utf8» при установке его в подключении к базе данных и «utf-8» в заголовке HTTP: P