У меня есть простой PHP-скрипт, который ищет базу данных mySQL и выводит результат пользователю. Раньше я использовал ISO-8859-1
в качестве моей кодировки, но мне было рекомендовано использовать UTF-8
. Но у меня проблемы с моей прежней кодировкой на новую.UTF-8 дает мне вопросительные знаки
Чтобы прояснить некоторые вещи, у меня есть:
- создание базы данных и таблиц, закодированные в
UTF-8
при сличенииutf8_unicode_ci
. - Закодировал мой PHP-файл в
UTF-8
. - Установите мета-кодировку на
UTF-8
. - Весь текст
mime-types
доUTF-8
поcreate-mime.assign.pl
в Lighty (Lighttpd).
Теперь проблема возникает, когда я извлечение данных из базы данных с символами, как ö
, ü
и т.д. Если я просто echo "ö";
без извлечения его из базы данных, он отлично работает. Я предполагаю, что, должно быть, что-то не так с базой данных?
Я попытался следующие, и они решили мою проблему:
- Установите мета кодировок в
ISO-8859-1
(который, по какой-то странной причине работает, но ломает echo'd «ö»). - Установите функцию
utf8_decode()
вокруг выхода. - После
mysql_select_db()
заявил следующееmysql_set_charset('utf8');
.
Я знаю, что нашел несколько решений, но я просто не знаю, почему это не будет работать без них? И неуместно ли использовать utf8_decode()
на выходе, или функцию mysql_set_charset()
?
разъем базы данных, а? .. ah, nope ... да, вам нужно установить кодировку на соединителе ('mysql_set_charset' - хотя это устарело, и вы должны хотя бы использовать MySQLi), иначе вы захотите преобразовать utf-8 в базе данных до iso 8859-1 (по умолчанию для соединителя MySQL), прежде чем передавать его на PHP и, в конечном счете, на экран ..., который затем приведет к '?' – CD001
@ CD001 Почему, черт возьми, стандартный соединитель MySQL по умолчанию соответствует ISO-8859-1? Ну что ж, предположим, это проблема. Попробуем использовать приведенный ниже ответ. – AnonymousJ
Хехех - да, я знаю ... попробуйте http://php.net/manual/en/mysqli.set-charset.php или http://uk3.php.net/manual/en/function.mysql-set -charset.php, хотя теперь все функции 'mysql_ *' устарели. – CD001