HTML - Смешивание UTF-8 из базы данных MySQL и специальных символов в HTML - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть база данных, где все определено в UTF-8 (кодировки, сопоставления, ...).
У меня есть страница PHP, которая получает данные из этой базы данных и отображает их.
Эта страница PHP содержит какой-то жесткий текст со специальными символами, такими как é, à, ...

Моя страница PHP имеет метасимвол, определенный как utf-8.
Я звоню mysql_set_charset("utf8");
Моя страница PHP написана в редакторе, настроенном для кодирования в utf-8 Unicode (Dreamweaver CS4, другой опции utf-8 нет)

Все, что приходит из базы данных в порядке, но ...
Я не могу хорошо отображать жесткие специальные символы (é, à, ù, ...).
Та же проблема, когда я использую strip_tags(html_entity_decode($datafromdatabase)); для данных, поступающих из базы данных. Вот это действительно проблематично.

Что я могу сделать, чтобы продолжать использовать UTF-8, но иметь возможность хорошо отображать специальные символы без необходимости использовать их HTML-эквивалент (é, &agrave, ...)?

EDIT
Проблема со сложными символами исходила от страницы php, которая не была сохранена с использованием кодировки adhoc. Я создал новый документ, скопировал / вставил старый код в эту новую страницу и сохранил его на старой странице. Больше нет проблем со сложными персонажами.

Но у меня все еще есть проблемы с strip_tags(html_entity_decode($datafromdatabase));
использование $datafromdatabase = htmlentities(strip_tags(html_entity_decode($datafromdatabase)), ENT_COMPAT, "UTF-8") не решает проблему. У меня есть странные символы, начинающиеся с # для каждого é, à, ù в тексте, поступающем из базы данных (хранится как &eacute, ...)

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Похоже, проблема в том, что ваш браузер правильно отображает символы, а не сохраняет их.

Проверьте две вещи.

Введите http-заголовок utf8

header( 'Content-Type: text/html; charset=UTF-8' );

И убедитесь, что в вашей декларации html упоминается utf8

<meta http-equiv="Content-type" content="text/html;charset=UTF-8">

Это для html 4

Если ваш документ правильно закодирован, это должно быть сделано.

0 голосов
/ 09 декабря 2011

Проблема со сложными символами исходила от страницы php, которая не была сохранена с использованием кодировки adhoc. Я создал новый документ, скопировал / вставил старый код в эту новую страницу и сохранил его на старой странице. Больше нет проблем со сложными персонажами.

Для проблемы, исходящей из strip_tags(html_entity_decode($datafromdatabase)); Я должен был использовать strip_tags(html_entity_decode($datafromdatabase, ENT_QUOTES, "UTF-8"));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...