Intereting Posts

Проблемы с отображением японских символов с использованием PHP и MySQL

Я использую подключение PHP к базе данных MySQL для создания XML-файла. Все работает, за исключением кодировки символов. Мне нужны как японские, так и английские персонажи, поэтому, очевидно, я решил использовать UTF-8. Только проблема заключается в том, что японские символы из базы данных отображаются неправильно.

Для сопоставления базы данных и таблиц установлено значение UTF8_general_ci, равно как и сопоставление соединений MySQL.

Мой php-файл определяет использование UTF-8 (и сохраняется в UTF-8 без спецификации) в 2 разных местах, один раз в заголовке со следующей строкой: header («Content-type: text / xml; charset = utf-8 «); Другое место, которое оно определяет, находится в выходном файле XML.

В качестве теста у меня был php-файл, который пишут некоторые японские символы только из кода, поэтому он не поступает из базы данных. Это отображается правильно (можно увидеть здесь http://jlearn.0sites.net/Flash/xml/xml.php … последние 5 записей содержат некоторые японцы, за которыми следуют вопросительные знаки из-за японцев, которые должны появиться из база данных).

Поэтому проблема, скорее всего, в базе данных, но все выглядит правильно для меня.

Есть идеи?

На самом деле просто отправил это – проблема с кодировкой запроса php mysql


То, что я обычно ищу, решает многое;

mysql_query("SET NAMES 'utf8'"); 

Перед выполнением любых запросов.

В документации рекомендуется использовать mysql_set_charset но я часто вижу, что эта функция отсутствует.

 if( function_exists('mysql_set_charset') ){ mysql_set_charset('utf8', $db_con); }else{ mysql_query("SET NAMES 'utf8'", $db_con); } 

Если вы используете объекты для доступа к db, то вот решение, которое работает для меня

 class DB { public $Link; private static $_instance; public static function instance() { if (NULL === self::$_instance) { self::$_instance = new DB; } return self::$_instance; } private function __construct() { $host = 'localhost'; $user = 'your_user_name'; $pass = 'your_password; $db = 'db_name'; $this->Link = new mysqli($host, $user, $pass, $db); $this->Link->set_charset('utf8'); } }