Also, was ist das Problem,
Es ist ein ’
( RIGHT SINGLE QUOTATION MARK
- U + 2019) Zeichen, das als CP-1252 anstelle von UTF-8 dekodiert wird . Wenn Sie das Kontrollkodierungen Tabelle, dann sehen Sie , dass dieses Zeichen in UTF-8 ist von Bytes zusammengesetzt 0xE2
, 0x80
und 0x99
. Wenn Sie das Kontroll CP-1252 - Codepage - Layout , dann werden Sie sehen , dass jedes dieser Bytes für die einzelnen Zeichen stehen â
, €
und ™
.
und wie kann ich das beheben?
Verwenden Sie UTF-8 anstelle von CP-1252, um die Zeichen zu lesen, zu schreiben, zu speichern und anzuzeigen.
Ich habe den Inhaltstyp sowohl in meinem <head>
Tag als auch in meinen HTTP-Headern auf UTF-8 gesetzt :
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Dies weist den Client nur an, welche Codierung zum Interpretieren und Anzeigen der Zeichen verwendet werden soll. Dies weist Ihr eigenes Programm nicht an, in welcher Codierung die Zeichen gelesen, geschrieben, gespeichert und angezeigt werden sollen. Die genaue Antwort hängt von der verwendeten serverseitigen Plattform / Datenbank / Programmiersprache ab. Beachten Sie, dass der im HTTP-Antwortheader festgelegte Vorrang vor dem HTML-Meta-Tag hat. Das HTML-Meta-Tag wird nur verwendet, wenn die Seite vom lokalen Datenträger-Dateisystem anstelle von HTTP geöffnet wird.
Außerdem ist mein Browser auf Folgendes eingestellt Unicode (UTF-8)
:
Dies zwingt den Client nur dazu, die Codierung zum Interpretieren und Anzeigen der Zeichen zu verwenden. Das eigentliche Problem ist jedoch, dass Sie bereits ’
(in UTF-8 codiert) an den Client senden, anstatt ’
. Der Client wird ’
mithilfe der UTF-8-Codierung korrekt angezeigt . Wenn der Client falsch angewiesen wurde, beispielsweise ISO-8859-1 zu verwenden, hätten Sie wahrscheinlich ââ¬â¢
stattdessen gesehen .
Ich verwende ASP.NET 2.0 mit einer Datenbank.
Hier liegt höchstwahrscheinlich Ihr Problem. Sie müssen mit einem unabhängigen Datenbank-Tool überprüfen, wie die Daten aussehen.
Wenn das ’
Zeichen vorhanden ist, stellen Sie keine korrekte Verbindung zur Datenbank her. Sie müssen den Datenbankconnector anweisen, UTF-8 zu verwenden.
Wenn Ihre Datenbank enthält ’
, ist es Ihre Datenbank, die durcheinander gebracht wird. Höchstwahrscheinlich sind die Tabellen nicht für die Verwendung konfiguriert UTF-8
. Stattdessen verwenden sie die Standardcodierung der Datenbank, die je nach Konfiguration variiert. Wenn dies Ihr Problem ist, reicht es normalerweise aus, nur die Tabelle zu ändern, um UTF-8 zu verwenden. Wenn Ihre Datenbank dies nicht unterstützt, müssen Sie die Tabellen neu erstellen. Es wird empfohlen, die Codierung der Tabelle beim Erstellen festzulegen.
Sie verwenden höchstwahrscheinlich SQL Server, aber hier ist ein MySQL-Code (aus diesem Artikel kopiert ):
CREATE DATABASE db_name CHARACTER SET utf8;
CREATE TABLE tbl_name (...) CHARACTER SET utf8;
Wenn Ihre Tabelle jedoch bereits UTF-8 ist, müssen Sie einen Schritt zurücktreten. Wer oder was hat die Daten dort abgelegt. Das ist , wo das Problem ist. Ein Beispiel wären vom HTML-Formular übermittelte Werte, die falsch codiert / decodiert sind.
Hier sind einige weitere Links, um mehr über das Problem zu erfahren: