#кодировка #php #mysql
This question already has answers here: Как настроить правильно кодировку для MySQL? (3 ответа) Закрыт 2 года назад. Добрый день. Результат sql-запроса возвращается не в UTF-8 кодировке. Пытался установить кодировку с помощью функции mysql_set_charset('utf8',$db), но по все видимости функция не работает, при том, что MySQL версии 5.0.7. Как можно по другому задать кодировку соединения, но не используя SET NAMES? З.Ы. Когда работал с той же таблицей при помощи PDO, при установке кодировки: $db->exec('SET CHARACTER SET utf8') Поля возвращались в UTF-8.
Ответы
Ответ 1
Самый 100%ый код для 100%ого UTF-8 :D mysql_query("SET NAMES 'utf8'"); mysql_query("SET CHARACTER SET 'utf8'"); mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");Ответ 2
Оригинальное API MySQL (функции mysql_) устарело, начиная с версии PHP 5.5.0, и удалено в PHP 7.0.0. Для улучшенного модуля MySQL (MySQL Improved) предпочтительным способом является использование метода set_charset(). ... $mysqli->set_charset('utf8'); ... или ... mysqli_set_charset($link, 'utf8'); ... Использование для этих целей метода query() (например: SET NAMES 'utf8') не рекомендуется. В PDO следует указывать кодировку соединения в параметре dsn при создании экземпляра класса работы с бд: ... $dsn = 'mysql:dbname=DB;host=HOST;charset=utf8'; $pdo = new \PDO($dsn, $user, $password, $options); ... P.S. Для работы с четырехбайтовым UTF-8 (например, чтобы эмодзи сохранялись в базу) вместо кодировки utf8 следует использовать кодировку utf8mb4. База также должна быть настроена с использованием utf8mb4.Ответ 3
SET NAMES 'utf-8'Ответ 4
Если проблема с несрабатываением функции mysql_query("SET NAMES utf8") на локальном веб-сервере denwer - то это связано с тем, что в параметрах denwer по умолчанию назначена кодировка cp1251 - сутки голову ломал.Ответ 5
mysql_query('SET NAMES utf8 COLLATE utf8_general_ci');
Комментариев нет:
Отправить комментарий