Так в чем же проблема,
Это символ ’
(RIGHT SINGLE QUOTATION MARK
- U + 2019), который был закодирован как CP-1252 вместо UTF-8 . Если вы проверите таблицу encodings , то увидите, что этот символ в UTF-8 состоит из байтов 0xE2
, 0x80
и 0x99
. Если вы проверите макет кодовой страницы CP-1252 , то увидите, что каждый из этих байтов обозначает отдельные символы â
, €
и ™
.
и как мне это исправить?
Используйте UTF-8 вместо CP-1252 для чтения, записи, сохранения и отображения символов.
У меня для Content-Type установлено значение UTF-8 как в моем теге <head>
, так и в моих заголовках HTTP:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Это только указывает клиенту, какую кодировку использовать для интерпретации и отображения символов. Это не указывает вашей собственной программе, какую кодировку использовать для чтения, записи, хранения и отображения символов. Точный ответ зависит от используемой серверной платформы / базы данных / языка программирования. Обратите внимание, что набор из заголовка ответа HTTP имеет приоритет над метатегом HTML. Метатег HTML будет использоваться только при открытии страницы из файловой системы локального диска, а не из HTTP.
Кроме того, мой браузер настроен на Unicode (UTF-8)
:
Это только заставляет клиента использовать кодировку для интерпретации и отображения символов. Но реальная проблема заключается в том, что вы уже отправляете ’
(в кодировке UTF-8) клиенту вместо ’
. Клиент правильно отображает ’
, используя кодировку UTF-8. Если бы клиенту было неверно дано указание использовать, например, ISO-8859-1, вы бы, скорее всего, увидели ââ¬â¢
.
Я использую ASP.NET 2.0 с базой данных.
Скорее всего, это ваша проблема. Вы должны проверить с помощью независимого инструмента базы данных, как выглядят данные.
Если есть символ ’
, значит, вы не подключаетесь к базе данных правильно. Вы должны указать соединителю базы данных использовать 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-форме значения, которые неправильно закодированы / декодированы.
Вот еще несколько ссылок, чтобы узнать больше о проблеме: