Frage

Wenn Sie nur die hässlichen No-Char-Boxen sehen, welche Tools oder Strategien verwenden Sie dann, um herauszufinden, was schief gelaufen ist?

(Das spezifische Szenario, mit dem ich konfrontiert bin, sind Kästchen ohne Zeichen innerhalb eines <select>, obwohl japanische Zeichen angezeigt werden sollten.)

War es hilfreich?

Lösung

Erstens sind „hässliche No-Char-Boxen“ möglicherweise kein Codierungsproblem, sondern lediglich ein Zeichen dafür, dass keine Schriftart installiert ist, mit der die Glyphen auf der Seite angezeigt werden können.

Die meisten Probleme bei der Zeichenkodierung treten auf, wenn Zeichenfolgen von einem System an ein anderes übergeben werden.Bei Webapps erfolgt dies normalerweise zwischen dem Browser und der Anwendung, zwischen der Anwendung und dem Dateisystem und zwischen der Anwendung und der Datenbank.

Sie müssen also prüfen, woher die falsch kodierten Daten kommen, welche Zeichenkodierung sie an der Quelle haben und mit welcher Kodierung sie empfangen werden.Der beste Weg besteht darin, Charaktere durchzuschicken, von denen Sie wissen, dass das System Probleme hat, und sie auf jeder Ebene der App zu untersuchen.Wie sehen sie in der App aus?In der Datenbank?Wann erhalten Sie sie aus der Datenbank zurück?Wann werden sie im Browser angezeigt?

Es tut mir leid, dass ich so allgemein bin, aber die Frage bietet nicht viel mehr, mit dem man arbeiten kann.

Andere Tipps

Wenn die Daten, die Sie an den Browser senden, verstümmelt werden (Moji-Bake), erhalten Sie Müllzeichen.Wenn Sie außerdem den falschen Zeichensatz in Ihren META-Headern angeben, stellt Ihr Browser die Seite falsch dar, was erneut zu Moji-Bake führt, manchmal an zufälligen Stellen auf der Seite.

Beim Umgang mit CJK-Zeichensätzen müssen Sie sicherstellen, dass Sie während der gesamten Lebensdauer Ihres Programms (Datenspeicherung, -abruf, Datenmanipulation in Ihrem Code, Anzeige im Browser usw.) die UTF8-Zeichenkodierung verwenden.

Was ist UTF8?UTF8 verarbeitet binäre Datenströme, keine Zeichenfolgen.Dies bedeutet, dass die Bitkombinationen eine variable Länge haben können.ASCII-Zeichen haben eine feste Länge von 8 Bit, was 1 Byte entspricht. UTF8-Zeichen können jedoch aus 6 Bit, 8 Bit, 12 Bit usw. bestehen.Daher ist UTF8 anfällig für das, was die Japaner „Mojibake“ nennen.

Als Programmierer sollten Sie von der Datenbank über die Codebasis bis zum Browser versuchen, UTF8 vollständig zu nutzen.Für E-Mails können Sie UTF8 verwenden, aber Sie werden wahrscheinlich feststellen, dass die meisten Mailserver und -clients noch alt sind und eine Mischung aus verschiedenen Zeichensätzen verwenden (z. B.ISO9022X).

DatenbankeinstellungenWenn Sie ein MySQL-Benutzer sind, stellen Sie sicher, dass alle Verbindungen zur Datenbank UTF8 verwenden und dass alle Tabellen/Felder UTF8 verwenden.Standardmäßig verwendet MySQL lateinische (schwedische) Zeichensätze.Diese verrückten Schweden lieben ihren Sinn für Humor!!

Überprüfen Sie Ihre CodebasisMeiner Erfahrung nach gibt es Editoren wie Notepad++, Notepad2, UltraEdit, e usw.alle haben Probleme mit der UTF8-Unterstützung.Sie funktionieren größtenteils, aber da ihre Entwickler selbst keine CJK-Sprachen verwenden, sind sie nicht perfektioniert.Probleme wie das Deaktivieren von BOM (Byte Order Mark), verstümmelte Tabulatoren, schlechte Zeichensatzkonvertierung usw.alle aktuellen Probleme.

Ich empfehle dringend, einen bewährten UTF8-Editor wie Maruo zu verwenden.Dies wird von einem japanischen Unternehmen hergestellt, es gibt jedoch eine englische Version (und eine Testversion) unter http://www.hidemaru.interlink.or.jp/software/

Abschließend müssen Sie möglicherweise Ihre Quelldateien in UTF8 konvertieren.Vor allem, wenn die Codebasis selbst CJK-Sprachzeichenfolgen enthält.

Saiten manipulierenJede String-Funktion muss multibytesicher sein.Beachten Sie, dass ich nicht Doppelbyte gesagt habe.UTF8 ist kein Doppelbyte, sondern ein Multibyte, abhängig von der Gesamtzahl der Bits, die zur Darstellung eines Zeichens verwendet werden.In PHP müssen Sie die MB-String-Funktionen gezielt aufrufen.Ruby und andere Sprachen bieten eine transparentere Unterstützung, aber Sie müssen die Dokumente für Ihre Anwendungsservervariante überprüfen!

META-TagsSchauen Sie sich google.co.jp oder yahoo.co.jp für ihre META-Header an.Das sind Seiten, die wissen, wie man es richtig macht.Fügen Sie grundsätzlich das folgende META-Tag in das Dokument ein: <HEAD>

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

Normalerweise ist es auch sicher, englische HTML-Dokumenttypattribute mit dem oben genannten Zeichen zu kombinieren.Das Hinzufügen des obigen META-Tags scheint also in einem HTML-Dokument zu funktionieren, das Folgendes enthält:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

EmailDas ist eine ganz andere Dose Würmer.UTF8 funktioniert viel, aber viele ältere japanische Clients verwenden häufiger ISO2022X.Dies ist hier nicht der Rede wert.

Debuggen von UTF8-ProblemenSobald Sie über einen zuverlässigen UTF8-Editor wie Maruo verfügen, können Sie statische Seiten erstellen und Ihre Probleme lösen.

Ich hoffe, das hilft

Leiten Sie die Daten auf die Festplatte um und verwenden Sie a Hex-Editor.Die meisten Texteditoren/-betrachter führen ihre eigenen Konvertierungen hinter den Kulissen durch, sodass es schwierig ist, sicher zu sein, dass Sie die Daten in ihrer wahren Form sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top