mysql 选择字符集 拉丁字符集_mysql的字符集
mysql 字符集介紹
2017-09-30-09:16:57
個人原創,轉載請注明,否則追究法律責任
原理:mysql -uroot -p
所以當涉及到,插入的字符集里有中文時,一定要現在定義:set names gbk;
字符集:mysql用來存儲字符串的方式。(包含字符集和校隊規則)
默認字符集:拉丁字符集
GBK 定長,雙字節,不是國際標準,支持的系統不少
UTF-8 非定長,1-4字節,廣泛支持,mysql也使用UTF-8
latin1 mysql的默認字符集
字符集的選擇:
1,如處理各種文字,發布到不同語言的國家(處理英文),應選Unicode,對應的mysql就是UTF-8,每個漢字三字節,
如果應用需要處理英文,僅少量漢字,UTF-8 更好
2,如需支持中文,數據量大,性能要求高,可選GBK(每個漢字雙字節,英文也是雙字節)
實際中:2/3使用UTF-8,1/1使用GBK,mysql可以支持多種字符集,
同一臺機器,庫,表的不同字段都可以指定不同的字符集。建庫的字符集應給和建表的字符集應該一樣。應該和mysql客戶端的字符集,甚至操作系統的字符集全統一,這樣就正常。否則可能會出錯。
修改后的字符集變量:
mysql>show variables like 'character_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
查看表的字符集:
mysql>show create table cc;
+-------+-------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------+
| cc | CREATE TABLE `cc` (
`name` char(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-------+-------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
建一個gbk字符集的表:
mysql>create table dd(id int,name char(20)) default charset=gbk;
Query OK, 0 rows affected (0.01 sec)
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
mysql>insert into dd values(1,'abc'),(2,'性能要求高'),(3,'如需支持中文');
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from dd;
+------+--------------------+
| id | name |
+------+--------------------+
| 1 | abc |
| 2 | 性能要求?? |
| 3 | 如需支持中文 |
+------+--------------------+
3 rows in set (0.00 sec)
注意:庫和表的字符集要統一,要么都是utf8或者都是gbk。一般都用utf8.
另外的方法:在/etc/my.cnf 里添加參數:
位置為[mysqld]的下面
default-character-set=gbk
service mysqld restart 重啟服務。
能夠修改:character_set_server和character_set_database這兩個的字符集
而set names gbk;可以修個上面兩個,再加上:客戶端和連接。
生產環境的字符集設置:
你的程序用什么字符集,則你的數據庫就用什么字符集,你的表就用什么字符集,否則就會有亂碼
生產環境中常用的字符集有gbk 和utf8
比如:用在博客和CMS等產品的數據庫授權
mysql> create databse blog default character set gbk collate gbk_chinese_ci;
mysql> insert into c3 values(1,'的備份與恢'); -------插入時沒問題,
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from c3; --------------------------查看時會報亂碼
+------+------------+
| id | name |
+------+------------+
| 1 | afdasf |
| 1 | 的備份? | ------------------------------出現亂碼
+------+------------+
2 rows in set (0.00 sec)
設置字符集后在插入數據
mysql>set names gbk; ------------------------------------ 這時固定格式:set names gbk;names是mysql的變量,不能改成其他的
Query OK, 0 rows affected (0.00 sec)
mysql>insert into t1 values(1,'abc'),(2,'生產環境');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql>select * from t1;
+------+--------------+
| id | name |
+------+--------------+
| 1 | abc |
| 2 | 生產環境 | -------------------------------------- 這里就可以了,可以顯示中文了
+------+--------------+
2 rows in set (0.00 sec)
注意:set names gbk;只能是在gbk的數據庫里生效。在默認創建的拉丁的字符集的數據庫里,這樣設置無效。仍然識別不了中文
mysql> show create database chen;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| chen | CREATE DATABASE `chen` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into cc values('abc'),('數據庫就用'),('什么字符集');
Query OK, 3 rows affected, 2 warnings (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from cc;
+---------+
| name |
+---------+
| abc |
| ??????? |
| ??????? |
+---------+
總結:往數據庫里插入數據時,必需是先set names gbk;然后再插入,否則,插入的是亂碼。插入時成功的,但顯示不出來。沒用。
編輯sql語句。在第二行添加:set names gbk;
導入外部文本到數據庫中:
1,該文本的字符集要正確:gb2312
2, 文件里要加入:set names gbk;
總結
以上是生活随笔為你收集整理的mysql 选择字符集 拉丁字符集_mysql的字符集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql无法存储文字_mysql存储不
- 下一篇: mysql for centos下载_p