以下所有的操作均為mysql5.5環境下
一、建立乙個資料庫,預設字符集是latin1
mysql> create database dbatest;
mysql> show create database dbatest\g
mysql> show create database dbatest\g
*************************** 1. row ***************************
database: dbatest
create database: create database `dbatest` /*!40100 default character set latin1 */
1 row in set (0.00 sec)
建立乙個表
mysql> show create table student\g
*************************** 1. row ***************************
table: student
create table: create table `student` (
`id` int(4) not null auto_increment,
`name` char(20) not null,
`age` tinyint(2) not null default '0',
`dept` varchar(16) default null,
primary key (`id`)
) engine=innodb default charset=latin1
二、建立資料庫
mysql> insert into student values (1,'amsilence');
error 1136 (21s01): column count doesn't match value count at row 1
mysql> insert into student values (1,'amsilence',20,'one');
query ok, 1 row affected (0.00 sec)
mysql> select * from student;
+----+-----------+-----+------+
| id | name | age | dept |
+----+-----------+-----+------+
| 1 | amsilence | 20 | one |
+----+-----------+-----+------+
1 row in set (0.00 sec)
插入中文檢視,發現中文亂碼
mysql> insert into student values (2,'化繁為簡',20,'two');
query ok, 1 row affected, 1 warning (0.00 sec)
mysql> select * from student;
+----+-----------+-----+------+
| id | name | age | dept |
+----+-----------+-----+------+
| 1 | amsilence | 20 | one |
| 2 | ???? | 20 | two |
+----+-----------+-----+------+
2 rows in set (0.00 sec)
三、中文亂碼解決辦法
方法1:mysql> set names latin1;
結果:mysql> insert into student values (3,'化繁為簡',20,'three');
query ok, 1 row affected (0.01 sec)
mysql> select * from student;
+----+--------------+-----+-------+
| id | name | age | dept |
+----+--------------+-----+-------+
| 1 | amsilence | 20 | one |
| 2 | ???? | 20 | two |
| 3 | 化繁為簡 | 20 | three |
+----+--------------+-----+-------+
3 rows in set (0.00 sec)
方法2:建立乙個.sql檔案,在mysql中匯入
mysql> system cat ~/test.sql
set names latin1;
insert into student values (4,'簡單',20,'666');
source匯入資料
mysql> source ~/test.sql
query ok, 0 rows affected (0.00 sec)
query ok, 1 row affected (0.01 sec)
結果:mysql> select * from student;
+----+--------------+-----+-------+
| id | name | age | dept |
+----+--------------+-----+-------+
| 1 | amsilence | 20 | one |
| 2 | ???? | 20 | two |
| 3 | 化繁為簡 | 20 | three |
| 4 | 簡單 | 20 | 666 |
+----+--------------+-----+-------+
4 rows in set (0.00 sec)
方法3:使用mysql匯入資料庫時加字符集引數選項
引數:[root@mysql-dba ~]# mysql -uroot -p123456 --default-character-set=latin1 dbatest < test.sql
例子:[root@mysql-dba ~]# cat test.sql
insert into student values (5,'簡單2',20,'666');
insert into student values (6,'簡單3',20,'666');
insert into student values (7,'簡單4',20,'666');
insert into student values (8,'簡單5',20,'666');
檢視資料庫:
注意:檢視的時候需要將資料庫裡面的字符集設定latin1,不然顯示會亂碼
mysql> set names latin1;
query ok, 0 rows affected (0.00 sec)
mysql> select * from student;
+----+--------------+-----+-------+
| id | name | age | dept |
+----+--------------+-----+-------+
| 1 | amsilence | 20 | one |
| 2 | ???? | 20 | two |
| 3 | 化繁為簡 | 20 | three |
| 4 | 簡單 | 20 | 666 |
| 5 | 簡單2 | 20 | 666 |
| 6 | 簡單3 | 20 | 666 |
| 7 | 簡單4 | 20 | 666 |
| 8 | 簡單5 | 20 | 666 |
+----+--------------+-----+-------+
8 rows in set (0.00 sec)
修改my.cnf配置檔案
在[mysqld]這個區塊內新增引數
character-set-server=latin1
在[client]區塊裡面新增
default-character-set=latin1
小結:不亂碼就是統一字符集,服務端、客戶端、庫、表、程式都要統一
如果裡面已經存在資料,那麼需要將資料匯出重新建立資料庫在匯入資料。
mysql資料庫出現中文亂碼的終極解決辦法
一.windows環境 1.找到配置檔案my.ini,一般在mysql安裝目錄下 通過everything搜尋 開啟 2.在標籤 mysql 下新增或修改 default character set utf8 在標籤 mysqld 下新增或修改 character set server utf8 在...
MySQL資料庫 完美解決中文資料亂碼
mysql會出現中文亂碼的原因不外乎下列幾點 1.server本身設定問題,例如還停留在latin1 2.table的語系設定問題 包含character與collation 3.客戶端程式 例如php 的連線語系設定問題 強烈建議使用utf8 utf8可以相容世界上所有字元 一 避免建立資料庫及表...
mysql資料庫 中文亂碼
參考文章 本文有些長情況複雜,可直接看最下面 8 總結 解決方案 1.mysql資料庫中文顯示亂碼 命令列中也是 在sqlyog裡面顯示?在命令列也顯示?2.命令 show variables like character 從上圖中可以看到 mysql 有六處使用了字符集,分別為 client co...