Итак, в чем проблема,
blockquote>Это символ
’
(RIGHT SINGLE QUOTATION MARK
- U + 2019), который был закодирован как CP-1252 вместо UTF-8 . Если вы проверите таблицу encodings , вы увидите, что этот символ находится в UTF-8, состоящий из байтов0xE2
,0x80
и0x99
. Если вы проверите макет кодовой страницы CP-1252 , вы увидите, что каждый из этих байтов обозначает отдельные символыâ
,€
и™
.и как его исправить?
blockquote>Используйте UTF-8 вместо CP-1252 для чтения, записи, сохранения и отображения символов.
У меня есть Content-Type, установленный в UTF-8 как в моем теге
, так и в моих HTTP-заголовках:
blockquote>
Это только инструктирует клиент, кодирование которого используется для интерпретации и отображения символов. Это не дает указания вашей собственной программе, которую кодировка должна использовать для чтения, записи, хранения и отображения символов. Точный ответ зависит от используемой серверной платформы / базы данных / языка программирования. Обратите внимание, что тот, который установлен в заголовке ответа HTTP, имеет приоритет над метатегами HTML. Метатег HTML будет использоваться только тогда, когда страница будет открыта из локальной файловой системы диска, а не из HTTP.
Кроме того, мой браузер настроен на
blockquote>Unicode (UTF-8)
:Это только заставляет клиента кодирование использовать для интерпретации и отображения символов. Но актуальной проблемой является то, что вы уже отправили
’
(закодированный в UTF-8) клиенту вместо’
. Клиент правильно отображает’
, используя кодировку UTF-8. Если клиент был неправильно проинсталлирован для использования, например, ISO-8859-1, скорее всего, вы виделиââ¬â¢
.Я использую ASP.NET 2.0 с базой данных.
blockquote>Это наиболее вероятно, где ваша проблема. Вы должны проверить с помощью независимого инструмента базы данных, как выглядят данные.
Если присутствует символ
’
, значит, вы неправильно подключаетесь к базе данных. Вы должны указать соединителю базы данных, чтобы использовать UTF-8.Если ваша база данных содержит
’
, значит, ваша база данных испорчена. Скорее всего, таблицы не настроены на использованиеUTF-8
. Вместо этого они используют кодировку по умолчанию для базы данных, которая зависит от конфигурации. Если это ваша проблема, достаточно просто изменить таблицу для использования UTF-8. Если ваша база данных не поддерживает это, вам нужно будет воссоздать таблицы. Хорошая практика - установить кодировку таблицы при ее создании.Скорее всего, вы используете SQL Server, но здесь есть код MySQL (скопированный из этой статьи ):
CREATE DATABASE db_name CHARACTER SET utf8; CREATE TABLE tbl_name (...) CHARACTER SET utf8;
Если ваша таблица, однако, уже UTF-8, вам нужно сделать шаг назад. Кто или , что поместил там данные. Это , где проблема. Одним из примеров может служить формат HTML, который неправильно кодирован / декодирован.
Вот еще несколько ссылок, чтобы узнать больше о проблеме:
- Unicode - Как правильно получить символы?
Unicode - как правильно получить символы? , с более краткими и практическими сведениями, решения ориентированы на среды Java.- Как настроить ваш сайт PHP для использования UTF8 , ориентированного на среды PHP.