Vorwort:
Um ehrlich zu sein,
Auch Sandals hält UTF8 für eine gute Sache...
Schließlich ist es für Ostasiaten sehr attraktiv, China, Japan und Südkorea auf demselben Bildschirm zu zeigen ...
(Natürlich sind die Vorteile nicht darauf beschränkt...)
Nicht nur Webprogramme …
Die Kernel vieler Anwendungen beginnen, Unicode-Codierung zu verwenden ...
Der Zweck liegt auf der Hand: Unterstützung der mehrsprachigen Anzeige ...
Die gesamte Microsoft-Software basiert auf Unicode...
Daher kann japanische Software auf Ihrem chinesischen XP normal angezeigt werden...
Und Chinesisch 98 verursacht verstümmelte Zeichen, wenn andere Sprachsoftware auf dem GB-Kernel installiert wird ...
Was UTF8 betrifft,
Man kann sagen, dass es sich um einen Zweig von Unicode handelt.
Es verwendet drei Bytes, um ein chinesisches Zeichen zu speichern ...
(Unicode verwendet vier Bytes)
Anwendungssoftware ist kollektiv auf Unicode umgestiegen ...
Dürfen wir UTF8 nicht in Webanwendungen verwenden?
In diesem Artikel wird Sandalen versuchen, die PHP-Programmierung unter UTF8-Kodierung in möglichst vielen Aspekten einzuführen ...
Warum „Chinesisch“ separat eingeführt wird ...
Erstens, weil es im Englischen wirklich keinen Grund gibt, UTF8 zu berücksichtigen …
Es sei denn, Sie planen den Aufbau eines mehrsprachigen Systems ...
(Ich möchte mich beschweren: Heutzutage achten Ausländer beim Schreiben von Programmen überhaupt nicht auf dieses Thema ...)
Zweitens sind die Verarbeitungsmethoden von Multibyte-Sprachen wie China, Japan und Korea unter UTF8-Codierung tatsächlich sehr ähnlich ...
Folgen Sie einfach dem Kürbis und ziehen Sie die Schaufel ...
Okay... beginnen wir mit dem Teil der Datenbankverarbeitung...
=========================================
Herstellen einer Verbindung zur Datenbank
Viele Leute werden feststellen, dass die Daten durcheinander sind, wenn sie gerade ein Upgrade auf MySQL 4.1 durchführen ...
Tatsächlich liegt es daran, dass MySQL Zeichensätze ab 4.1 unterstützt ...
Und der Standardzeichensatz ist UTF8 ...
(Vollständiger Beweis dafür, wie wichtig die Integration mit internationalen Standards ist ... Hehe ...)
In der Vergangenheit haben wir hauptsächlich die Codierung utf8 oder GBK verwendet ...
Natürlich sind die Ausgabedaten verstümmelt ...
Um den verstümmelten Code zu lösen ...
Sie müssen dem Programm mitteilen, welche Codierungsdaten es erhalten soll ...
Wir gehen davon aus, dass Ihre vorherige Datenbank utf8-codiert war ...
mysql_query('SET CHARACTER SET utf8') oder die("Query failed : " . mysql_error());
hinzufügen.
Da dies natürlich nur für 4.1 und höher erforderlich ist,
Deshalb können wir ein Urteil hinzufügen:
$mysqlversion = $db->query_first("SELECT VERSION() AS version");
if ($mysqlversion['version'] >= '4.1')
{
mysql_query('SET CHARACTER SET utf8') or die("Abfrage fehlgeschlagen: " . mysql_error());
}
Auf diese Weise können Sie unabhängig von der Standardcodierung von MySQL normal darauf zugreifen ...
(Es spielt keine Rolle, ob Sie während der Überlebensperiode einzahlen, für einen bestimmten Zeitraum einzahlen oder sogar kleine Beträge abheben...)
Allerdings ist jeder international...
Benutzt du immer noch utf8?
Wie transkodiere ich es?
außerdem……
Was soll ich tun, wenn während der Datenaktualisierung verstümmelte Zeichen angezeigt werden?
Salat!
Hören wir uns das nächste Mal die Aufschlüsselung an ...
====================================================== === =
Daten müssen auf 4.1 aktualisiert werden
...
Sie müssen es zuerst exportieren ...
Zu sagen, dass Ausländer wirklich verantwortungslos sind...
Bei der vorherigen Exportmethode gingen immer einige chinesische Zeichen verloren ...
Ändern Sie zum Beispiel „Ich liebe deine Mutter“ in „Ich liebe dich“ ...
(Normalerweise geht das letzte Wort einer Datenmenge verloren)
Das Ganze liegt eine Generation zurück...
(Mit den Worten von Schwester Pomegranate: „Die Tatsache einer solch rebellischen Tat ist wirklich aufregend“...)
Um dein zerbrechliches Herz zu schützen ...
Auch um die traditionelle chinesische Ethik und Moral aufrechtzuerhalten ...
Sie können die Felder, deren Daten chinesische Zeichen enthalten, in binäre Codierung ändern ...
Die spezifische Methode...
Sie können diese Anweisung ausführen:
ALTER TABLE `table name` CONVERT TO CHARACTER SET binär;
Auf diese Weise können solche Zeichentypfelder wie:
CHAR, VARCHAR und TEXT
wird umgewandelt in
BINÄR, VARBINÄR und BLOB
Dann exportieren und importieren Sie in die 4.1-Umgebung ...
Die letzte mühsame Aufgabe ist natürlich:
Sie müssen ihre Typen wieder ändern ...
Es gibt ein Upgrade auf 4.1 ...
Natürlich gibt es auch Downgrades...
Wie kann ich ein Downgrade durchführen? ? ?
Sandalen für den Toilettengang...
Und bitte blättern Sie zur nächsten Seite...
======================================= ==== ===
Die Daten wurden von 4.1 herabgestuft.
Einige Leute stellten fest, dass die aus 4.1 exportierten SQL-Dateien nicht in Programme niedrigerer Versionen importiert werden konnten ...
Das Problem ist eigentlich ganz einfach...
Und MySQL hat für uns schon an alles gedacht...
Bitte fügen Sie beim Exportieren den Parameter --kompatible hinzu ...
Wir gehen davon aus, dass Ihre Datenbank utf8-codiert ist ...
Und die Zieldatenbankversion ist 4.0…
Schreiben Sie dann Folgendes in die Befehlszeile:
Shell>mysqldump --user=Benutzername --password=password --kompatible=mysql40 --default-character-set=utf8 Datenbank > db.sql
Die so exportierte SQL-Datei kann erfolgreich in die Datenbank der niedrigeren Version importiert werden...
Der Datenbankteil ist endlich fertig...
Aber wie sollten wir auf die PHP-Programmierung achten?
Ich muss Sie bitten, die nächste Seite aufzuschlagen...
http://www.knowsky.com
===========================================
PHP-Dateikodierung
Müssen alle PHP-Dateien in die UTF8-Kodierung konvertiert werden?
Sandalen sagen NEIN...
sagen wir es mal so...
Wenn die Datei chinesische Zeichen enthält, die angezeigt werden müssen ...
Es sollte in die UTF8-Kodierung konvertiert werden ...
Geben wir ein Beispiel:
// Ich bin eine Sandale
Echozeit();
Obwohl der obige Code Code hat ...
Aber da es in der Anmerkung existiert ...
Keine Ausgabe...
Daher muss diese Seite nicht in das UTF8-Format konvertiert werden...
Ein weiteres Beispiel:
echo „I am Sandals“;
Dies hat offensichtlich eine Ausgabe chinesischer Schriftzeichen ...
Sie sollten einfach in UTF8 konvertieren ...
Natürlich verwenden viele Programme jetzt die Template-Technologie (Sprachpaket) ...
Sie können im Programm (nichtsprachliche Paketdatei) keine Zeichen für die Ausgabe sehen...
Auf diese Weise müssen wir nur die Sprachpaketdatei in UTF8-Kodierung konvertieren ...
(Das ist der Vorteil von Sprachpaketen... Ahahahahaha...)
'http://www.knowsky.com
===============================================
Chinesisches Abfangen von UTF8,
weil UTF8 drei Bytes verwendet ...
Die traditionelle Substr-Funktion ist also nutzlos ...
Viele Experten haben Funktionen zum Abfangen chinesischer UTF8-Zeichen geschrieben ...
Hier sind einige:
1. Berechnen Sie zuerst und nehmen Sie dann
/**
* Autor: Dummy |
* E-Mail: [email protected] |
*Erstellen: 200512
* Verwendung: echo join('', String::subString_UTF8('Chinesische Zeichen', 0, 1));
*/
ini_set('display_errors', 1);
error_reporting(E_ALL ^ E_NOTICE);
Klasse String {
Funktion subString_UTF8($str, $start, $lenth)
{
$len = strlen($str);
$r = array();
$n = 0;
$m = 0;
for($i = 0; $i < $len; $i++) {
$x = substr($str, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr('00000000'.$a, -8);
if ($n < $start){
if (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$i += 2;
}
$n++;
}anders{
if (substr($a, 0, 1) == 0) {
$r[] = substr($str, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[] = substr($str, $i, 2);
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[] = substr($str, $i, 3);
$i += 2;
}anders{
$r[] = '';
}
if (++$m >= $lenth){
brechen;
}
}
}
return $r;
} // Ende subString_UTF8
}//End String
echo join('', String::subString_UTF8('Chinesische Zeichen', 0, 1));
2. Ich finde es sehr clever, zuerst die Sandalen aufzuschneiden und sie dann abzuschneiden ...
Verwenden Sie die herkömmliche Abfangfunktion, um zuerst abzuschneiden ...
Stellen Sie dann fest, ob ein einzelnes chinesisches Zeichen geteilt ist ...
Wenn ja... dann kümmere dich darum...
Es ist wichtig zu beachten, dass der dritte Parameter der Substr-Funktion größer als 3 sein muss ...
Können Sie erklären, warum Sie keine Sandalen tragen?
// Eine Trimmfunktion zum Entfernen des letzten Zeichens einer UTF-8-Zeichenfolge
// indem Sie den Anweisungen auf http://en.wikipedia.org/wiki/UTF-8 folgen
// dotann
// Verwendung: $str = utf8_trim(substr($str,0,50));
Funktion utf8_trim($str) {
$len = strlen($str);
for ($i=strlen($str)-1; $i>=0; $i-=1){
$hex .= ' '.ord($str[$i]);
$ch = ord($str[$i]);
if (($ch & 128)==0) return(substr($str,0,$i));
if (($ch & 192)==192) return(substr($str,0,$i));
}
return($str.$hex);
}
$str = 'Chinesische Zeichen';
echo utf8_trim(substr($str,0,3));
3. Es gibt andere Methoden,
Beispielsweise ist 007pig eine Funktion, die in der chinesischen Version unseres vBulletins geschrieben wurde ...
Kurz und bündig...
Es ist unpraktisch, den Quellcode freizugeben ...
Tut mir leid, Bird...
Ich beende meinen Text heute hier...
Es gibt auch Probleme wie die Transkodierung, die noch nicht geschrieben wurden ...
In letzter Zeit beschäftigt...
Organisieren Sie weiter, wenn Sie Zeit haben ...
http://www.quchao.com/?p=6&pp=1