Die Gründe, warum MySQL verstümmelte chinesische Zeichen hat, sind lediglich die folgenden: Zeichen und Sortierung)
3. Probleme mit der Verbindungsspracheneinstellung von Client-Programmen (wie PHP)
Es wird dringend empfohlen, utf8 zu verwenden!!!!
utf8 ist mit allen Zeichen auf der Welt kompatibel! !!!
1. Vermeiden Sie verstümmelte chinesische Zeichen beim Erstellen von Datenbanken und Tabellen und überprüfen Sie die Codierungsmethode
1 Beim Erstellen der Datenbank: CREATE DATABASE `test`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
2. Beim Erstellen der Tabelle CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '' ,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
Sobald diese drei Einstellungen festgelegt sind, gibt es im Grunde keine Probleme, das heißt, beim Erstellen von Datenbanken und Tabellen wird dasselbe Codierungsformat verwendet.
1. Sehen Sie sich das Standardkodierungsformat an:
mysql> -----+-------------+
| Variablenname |
+---------------- ---------------+
|. gbk |
| |
|. character_set_results |
|. utf8 |
-------------+-------------+
Hinweis: Um die vorherigen 2 zu bestimmen, können Sie Set-Namen utf8 und Set-Namen gbk verwenden Legen Sie das Standardkodierungsformat fest;
Der Effekt der Ausführung von SET NAMES utf8 entspricht dem gleichzeitigen Festlegen von Folgendem:
SET Character_set_client='utf8';
SET Character_set_connection='utf8';
SET Character_set_results=' utf8';
mysql> ---+----- --------------------------- --------- --------------------------- --------+
|. Datenbank | erstellen |
+------------ --------------------------- --------- -----------------------+
| DATENBANK `test` /*!40100 STANDARDZEICHENSATZ gbk */ |
3. Überprüfen Sie das Codierungsformat der yjdb-Datenbank:
mysql>show create table yjdb;
|. CREATE TABLE `yjdb` (
`sn` int(5) NOT NULL AUTO_INCREMENT,
`type` varchar(10) NOT NULL,
`brc` varchar(6) NOT NULL,
`telname` varchar(10 ) NOT NULL,
`date` int(10) NOT NULL,
`count` int(6) NOT NULL,
`back` int(10) NOT NULL,
PRIMÄRSCHLÜSSEL (` sn`),
EINZIGARTIGER SCHLÜSSEL `sn` (`sn`),
EINZIGARTIGER SCHLÜSSEL `sn_2` (`sn`)
) ENGINE=MyISAM AUTO_INCREMENT=1826 DEFAULT CHARSET=gbk ROW_FORMAT=DYNAMIC |
2. Vermeiden Sie das Problem verstümmelter chinesischer Zeichen in importierten Daten
1: Speichern Sie das Datenkodierungsformat als utf-8.
Setzen Sie die Standardkodierung auf utf8:
Setzen Sie die Namen auf utf8;
Setzen Sie den Datenbank-Datenbanknamen standardmäßig auf utf8:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Import :
LOAD DATA LOCAL INFILE 'C:\utf8. txt' INTO TABLE yjdb;
2: Speichern Sie das Datenkodierungsformat als Ansi (d. h. GBK oder GB2312)
Stellen Sie die Standardkodierung auf gbk ein:
Setzen Sie die Namen auf gbk;
Legen Sie die Standardkodierung der Datenbank fest db_name zu gbk:
ALTER DATABASE `db_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
Setzen Sie die Standardkodierung der Tabelle tb_name auf gbk:
ALTER TABLE `tb_name` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;
Importieren:
LOKALE INDATEI „C:\gbk.txt“ IN TABELLE yjdb laden;
Hinweis: 1. Importieren Sie GBK nicht für UTF8 und importieren Sie UTF8 nicht für GBK . Die Anzeige von UTF8 wird unter DOS nicht unterstützt.
3. Lösen Sie das Problem verstümmelter Zeichen auf Webseiten.
Stellen Sie die Website-Kodierung auf utf-8 ein, das mit allen Zeichen auf der Welt kompatibel ist.
Wenn die Website schon lange läuft und viele alte Daten enthält und die Einstellungen für vereinfachtes Chinesisch nicht mehr geändert werden können, wird empfohlen, die Seitenkodierung auf GBK einzustellen. Der Unterschied zwischen GBK und GB2312 ist, dass GBK mehr Zeichen anzeigen kann als GB2312. Um die Zeichen in vereinfachtem Code anzuzeigen, können Sie nur GBK verwenden.
1. Bearbeiten Sie /etc/my.cnf und fügen Sie im Abschnitt [mysql] den Parameter ?useUnicode=true&characterEncoding=utf-8 hinzu 3. Fügen Sie dem Webseitencode einen Befehl „Set Names UTF8“ oder „Set Names GBK“ hinzu, um MySQL mitzuteilen, dass alle Verbindungsinhalte