2010-10-07 7 views
1

Я извлекаю статьи из своего блога на свой веб-сайт из mysqlDb. Статьи отображаются очень хорошо в блоге, но на веб-сайте некоторые символы, такие как ţ, ş, ă и т. Д., Заменяются черным квадратом с вопросительным знаком внутри. У меня есть «UTF-8», установленный в моем документе так же, как и в блоге.проблема со специальными символами

ответ

4

Вы должны сообщить MySQL, что соединение должно быть сделано в UTF-8. Для этого используйте функцию mysql_set_charset (вам нужен PHP 5.2.3). Если вы используете PHP 5.2.3 < попробовать:

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn); 

Кроме того, убедитесь, что заголовки говорит о том, что документ находится в кодировке UTF-8 (header функция и/или HTML мета-теги правильно установлен).

Также убедитесь, что ваши файлы PHP сохранены в UTF-8 без a BOM.

+0

mysql_set_charset() это было! Большое спасибо! – andrei

+0

Да, это обычная ловушка. Если вы этого не сделаете, MySQL будет преобразовывать данные «на лету» в latin1 (эквивалент utf8_decode). – AlexV

2

Как вы добавили эти символы в документ? В зависимости от редактора кодировка может быть искажена при сохранении. Вы установили тип документа в HEAD с помощью META в дополнение к указанию кодировки с использованием заголовков PHP?

Вот некоторые дальнейшего чтения по теме http://htmlpurifier.org/docs/enduser-utf8.html

Смежные вопросы