✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So konvertieren Sie GB2312 (oder andere Nicht-ANSI-Zeichen) in die UTF-8-Codierung (sowohl MySQL als auch Files Charset)

58

Meine erste Website steakovercooked.com startete 2006 (vor 9 Jahren). Und zu dieser Zeit wusste ich nicht viel über die Dateicodierung/den Zeichensatz und außerdem war UTF-8 zu dieser Zeit nicht so beliebt für Webseiten. Heutzutage wird UTF-8 so populär, dass WordPress auf der gesamten Website die UTF-8-Codierung verwendet, sodass Sie praktisch jede Sprache ohne Probleme auf einer Website anzeigen können.

So konvertieren Sie GB2312 (oder andere Nicht-ANSI-Zeichen) in die UTF-8-Codierung (sowohl MySQL als auch Files Charset)

UTF-8-ascii-iso-8859-1

Die Codepage aller Dateien (PHP, HTML, CSS und einige andere Klartextdateien) waren meistens auf ANSI-Codepages und die chinesischen Schriftzeichen sind Multi-Byte-kodiert. Um diese Zeichen (in ANSI-Codierung) im Browser anzuzeigen, müssten Sie diese zwischen Header-Tags in HTML einfügen, damit Browser sie verstehen können:

In HTML5 können Sie in einer viel kürzeren Methode schreiben:

Daher können die meisten nicht-chinesischen Sprecher die Zeichen nicht sehen, es sei denn, sie installieren das GB2312-Sprachpaket für den Browser. Außerdem ist es wahrscheinlich, dass einige gängige Texteditoren die Zeichen durcheinander bringen. Ein einzelnes Zeichen auf Chinesisch besteht aus zwei Bytes, aber manchmal schneidet der Texteditor einfach in zwei Hälften.

Dateien (ANSI) in UTF-8 konvertieren

Bevor Sie den Meta-Header ändern in:

Sie müssten die Dateien in die UTF-8-Codierung konvertieren. Es gibt viele Möglichkeiten, das zu tun. Die einfachste Methode wäre, Notepad zu verwenden, um als ‘UTF-8’-Codierung zu speichern.

So konvertieren Sie GB2312 (oder andere Nicht-ANSI-Zeichen) in die UTF-8-Codierung (sowohl MySQL als auch Files Charset)

notepad-convert-to-utf-8

Wenn Sie viele Dateien haben, können Sie dies mit dem Dienstprogramm iconv unter Linux (VPS Server) tun. Das folgende Skript (gespeichert unter Dateiname, zB toUTF) konvertiert eine einzelne Datei in UTF-8.

#!/bin/bash # https://helloacm.com   if [ "$#" -ne 1 ] ||! [ -r "$1" ]; then     echo "Usage: $0 file1"     exit 1 fi   x=`file -bi $1 | grep 'utf' | wc -l` if [ $x -eq 1 ]; then   echo "$1 already converted" else   echo converting $1 to UTF8   iconv -f "gb2312" -t "UTF-8" $1 -o $1 fi

Wir müssen vermeiden, zweimal umzuwandeln, um mögliche Probleme zu vermeiden. Der file -bi $1 | grep 'utf' | wc -lprüft, ob die Datei bereits mit UTF-8 kodiert wurde. Der Befehl iconv -f „gb2312″ -t „UTF-8″ $1 -o $1 konvertiert die Datei von gb2132 nach UTF-8 (ändern Sie dies entsprechend).

Jetzt können wir alle Dateien mit *.php-Dateierweiterungen im aktuellen Verzeichnis und allen Unterverzeichnissen loopen:

for x in `find. -type f -name "*.php"`; do toUTF $x done

Konvertieren Sie die MySQL-Datenbank in UTF-8

In meinem Fall sind alle meine vorherigen MySQL-Datenbanken standardmäßig auf die ANSI-Codierung (latin1_swedish_ci- Sortierung) eingestellt. Sie wird in den modernen Browsern beschädigt, wenn GB2312-Zeichen (Multibyte) vorhanden sind. Beispielsweise hat PhpMyAdmin die Codierung UTF-8 und die ANSI/GB2312-Zeichen werden im Browser beschädigt angezeigt.

Um diese Daten in UTF-8 zu speichern, ist die einfachste Methode, die Tabelle (phpMyAdmin empfohlen) in eine SQL-Datei zu exportieren; Stellen Sie sicher, dass Sie es mit ISO 8859-1 exportieren (vollständige Abdeckung von Englisch). iso 8859-1 ist auch als ANSI bekannt, aber die GB2312-Zeichen können als Multibyte-String gespeichert werden. Wenn Sie das SQL im Editor öffnen, können Sie immer noch die chinesischen Zeichen sehen, Sie müssen nur als ‘UTF-8’-Codierung speichern.

So konvertieren Sie GB2312 (oder andere Nicht-ANSI-Zeichen) in die UTF-8-Codierung (sowohl MySQL als auch Files Charset)

phpmyadmin

Oh, noch etwas, bevor Sie als UTF-8 speichern. Sie sollten in der SQL-Datei das Wort „latin1″ durch „utf-8″ suchen und ersetzen. Importieren Sie dann das SQL mit phpMyAdmin erneut, damit Sie loslegen können. Alle Daten werden beibehalten und in die UTF-8-Codierung geändert, und die Sortierung wird (für varchar, text, longtext usw.) in utf8_general_ci geändert.

MySQL UTF-8-Einstellungen

In PHP können Sie den Standardzeichensatz festlegen:

  mysql_query("SET NAMES 'utf8'");   mysql_query("SET CHARACTER SET utf8");

Ähnlich verhält es sich mit mysql_set_charset :

Sie können auch den Standardzeichensatz festlegen, wenn der MySQL-Server startet (sparen Sie sich Funktions-Overheads für den Aufruf obiger Funktionen). Bearbeiten Sie die Datei /etc/mysql/my.cnf und starten Sie den MySQL-Server neu, z. B. sudo service mysql restart. Fügen Sie Folgendes zu my.cnf hinzu :

[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8

Warum UTF-8?

UTF-8 behandelt alphabetische Buchstaben mit 1 Byte (dasselbe wie ANSI), verwendet jedoch 3 Bytes, um 1 chinesisches Zeichen darzustellen, während 2 Bytes verwendet werden, wenn es von GB2312 codiert wird. Wenn Ihre Seiten also viele chinesische Schriftzeichen enthalten, spart ANSI/GB2312 Platz, UTF-8 und ANSI verbrauchen jedoch genau den gleichen Platz, wenn es nur um englische Buchstaben geht.

Das UTF-8 erspart Ihnen in Zukunft Ärger. Sobald Sie in UTF-8 konvertiert haben, müssen Sie sich keine Gedanken mehr über den Zeichensatz oder die Kodierung machen. UTF-8 ist international zeichenfreundlicher, sodass die meisten Browser wissen, wie der Text korrekt angezeigt wird. In meinem Fall muss ich die Dateien in UTF-8-codiert konvertieren, da meine bevorzugten Texteditoren, sowohl PsPAD als auch Sublime-Text, nicht wissen, wie ANSI/GB2312 korrekt angezeigt werden.

Aufnahmequelle: helloacm.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen