Я использую подключение 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'); } }