То в чому проблема,
Це ’
( RIGHT SINGLE QUOTATION MARK
- U + 2019) символ, який декодується як CP-1252 замість UTF-8 . Якщо ви перевіряєте кодування таблиці, то ви побачите , що цей символ в кодуванні UTF-8 складається з байт 0xE2
, 0x80
і 0x99
. Якщо ви перевіряєте код макета сторінки CP -1252 , то ви побачите , що кожен з цих байт позначають окремі символи â
, €
і ™
.
і як я можу це виправити?
Використовуйте UTF-8 замість CP-1252 для читання, запису, зберігання та відображення символів.
У мене в <head>
тезі та в HTTP-заголовках встановлено тип вмісту UTF-8 :
<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 значення, які неправильно закодовані / декодовані.
Ось ще кілька посилань, щоб дізнатися більше про проблему: