Я пытаюсь произвести информацию о продукте, сохраненную в базе данных MySQL, но она выписывает некоторые странные символы, как ромб с вопросительным знаком в нем.
Я думаю, что это может быть проблема encoding/UTF8, но я указал кодирование, которое я хочу:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Действительно ли это правильно? На что я должен проверить?
Я полагаю, что вы хотите результат будет в utf8
SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'
Если только данные, поступающие из базы данных, содержат странные символы, убедитесь, что соединение MySQL также в UTF8, используя:
mysql_query("SET NAMES UTF8");
перед любыми другими запросами. В противном случае, если символы появляются также в «рукописных» файлах, убедитесь, что файлы сохранены в вашем редакторе как UTF-8. Вы также можете попробовать установить заголовок кодировки через PHP:
header('Content-type: text/html; charset=UTF-8');
Также убедитесь, что все поля в запрашиваемых таблицах настроены как некоторый вариант UTF-8, например utf8_general_ci
.
В продолжение того, что говорит Тату.
Это хороший справочный материал по кодировке: Абсолютный минимум, который должен знать каждый разработчик программного обеспечения о Unicode и наборах символов (без оправданий!)
В последний раз, когда у меня была такая проблема, решение было похоже на то, что сказал Тату Ульманен, но немного отличалось...
Так что если его решение не сработает, попробуйте заменить
mysql_query("SET NAMES UTF8");
на
mysql_query("SET NAMES latin1");
Я говорю это, потому что по умолчанию в MySql используется латинский1, и это то, что используется большую часть времени....
надеемся, что это поможет....