MySQL设置字符编码

1.       查看MySQL数据库的默认编码

1、使用status命令能够显示数据库的相关系信息:

mysql>status;
--------------

C:\Program Files\MySQL\MySQL Server5.6\bin\mysql.exe  Ver 14.14 Distrib5.6.15,

 forWin32 (x86)

 

Connection id:          15

Current database:       hello

Current user:           root@localhost

SSL:                   Not in use

Using delimiter:        ;

Server version:         5.6.15-enterprise-commercial-advancedMySQL Enterprise S

erver - Advanced Edition (Commercial)

Protocol version:       10

Connection:             localhost via TCP/IP

Server characterset:    latin1

Db    characterset:    latin1

Client characterset:    latin1

Conn. characterset:    latin1

TCP port:               3306

Uptime:                 2 hours 42 min 32 sec

 

Threads: 1 Questions: 226  Slow queries:0  Opens: 78  Flush tables: 1  Open ta

bles: 63 Queries per second avg: 0.023

--------------2、也可以使用如下命令:

mysql>show variables like ’char%’;
+--------------------------+----------------------------------------------------

-----+

| Variable_name            | Value

    |

+--------------------------+----------------------------------------------------

-----+

| character_set_client     | latin1

    |

| character_set_connection | latin1

    |

| character_set_database   | latin1

    |

| character_set_filesystem | binary

    |

| character_set_results    | latin1

    |

| character_set_server     | latin1

    |

| character_set_system     | latin1

    |

| character_sets_dir       | C:\Program Files\MySQL\MySQL Server5.6\share\chars

ets\ |

+--------------------------+----------------------------------------------------

-----+

8 rows in set (0.00 sec)

 

2.       通过命令修改其编码   

创建数据库指定数据库的字符集:

mysql>create database mydb characterset utf-8;#直接指定其编码

直接通过命令进行修改:

mysql>set character_set_client=utf8;

mysql>setcharacter_set_connection=utf8;

mysql>set character_set_database=utf8;

mysql>set character_set_results=utf8;

mysql>set character_set_server=utf8;

 

修改完了之后再查询:

mysql>show variables like'character\_set\_%';

+--------------------------+--------+

|Variable_name           | Value  |

+--------------------------+--------+

| character_set_client    | utf8   |

| character_set_connection |utf8   |

| character_set_database   |utf8   |

| character_set_filesystem | binary |

| character_set_results    |utf8   |

|character_set_server     | utf8   |

| character_set_system    | utf8   |

+--------------------------+--------+

结果全部都调整修改成UTF-8!

修改完了之后:

mysql>select * from hello;

出现乱码!

 

3.       解决数据导入导出的乱码问题

可以先创建测试数据库:如mydb

mysql>create database mydb;

mysql>use mydb;

mysql show variables like'character\_set\_%';

#打印输出如下:

+--------------------------+--------+

|Variable_name           | Value  |

+--------------------------+--------+

|character_set_client     | latin1 |

| character_set_connection | latin1 |

| character_set_database   |latin1 |

| character_set_filesystem | binary |

| character_set_results    |latin1 |

|character_set_server     | latin1 |

|character_set_system     | utf8   |

+--------------------------+--------+

依旧是latin编码的。

说明数据库本身的字符集是latin编码

 

将其编码设置一下:

mysql>set character_set_client=utf8;

mysql>setcharacter_set_connection=utf8;

mysql>setcharacter_set_database=utf8;

mysql>set character_set_results=utf8;

mysql>set character_set_server=utf8;

再查询一下其编码格式:

mysql>show variables like'character\_set\_%';

显示:

+--------------------------+--------+

|Variable_name           | Value  |

+--------------------------+--------+

|character_set_client     | utf8   |

| character_set_connection |utf8   |

| character_set_database   |utf8   |

| character_set_filesystem | binary |

| character_set_results    |utf8   |

|character_set_server     | utf8   |

|character_set_system     | utf8   |

+--------------------------+--------+

现在将数据导进来

mysql>mysql  –uroot  -proot  hello  mydb.sql;

其中的mydb.sql 其编码也是utf-8 格式的!

 

导进来数据库查看如果是乱码,请确认字符集编码是否兼容或一致!

 

MySQL字符集编码的类型种类

gb2312_chinese_ci和gbk_chinese_ci以及gb2312_bin,gbk_bin的区别

gb2312_chinese_CI : 只支持简体中文

gb2312_BIN   :而gb2312_bin可以说是gb2312_chinese_ci的一个子集,

而且gb2312_BIN是二进制存储.区分大小写数据库编码格式就意义不一样了

gbk_chinese_CI   支持简体中文和繁体

gbk_bin   解释同gb2312_BIN    对应gbk_chinese_CI

PS:GBK包括了简体与繁体两种类型

 

注意:

MySQL中默认字符集的设置有四级:服务器级,数据库级,表级,字段级。注意前三种均为默认设置,并不代表你的字段最终会使用这三种字符集其中之一的字符集设置。所以我们建议要用

mysql>show  create  table  tableName;

mysql>show  full  fields  from tableName;

mysql>show  full  colunms from  tableName;

 

来检查当前表中字段的字符集设置。

MySQL 中关于连接环境的字符集设置有  client, connection, results通过这些参数,MySQL就知道你的客户端工具用的是什么字符集,连接用的是什么字符集,结果集是什么字符集。这样MySQL就会做必要的翻译,这些参数有误,会导致字符串在转输过程中的转换错误。

一、             数据库表中字段的字符集设置。

A.        show  create  table  tableName

B.        show  full  columns from  tableName

C.        show  full  fields from  tableName;

如:mysql>show create table hello;

mysql>show full columns from hello; 查看列的编码类型

二、             查看数据库的编码格式:

A.        show  create  database databaseName;

 输出:CREATE DATABASE ` databaseName` /*!40100 DEFAULT CHARACTER SET utf8 */

 

三、             当前联接系统参数 

A.        show variables like 'char%';

 mysql> showvariables like 'char%';

 

中文字符集的中文兼容对照:

 big5     | Big5Traditional Chinese

 gb2312   | GB2312Simplified Chinese

 gbk      |GBK Simplified Chinese

 utf8     | UTF-8Unicode

 

修改数据库的字符集

mysql>use mydb

mysql>alter database mydb characterset utf-8;

 

创建数据库指定数据库的字符集

mysql>create database mydb characterset utf-8;

mysql>show variables like'character\_set\_%';

所查看到了几项中其中有这三项是受CLIENT客户端影响

character_set_client

character_set_connection

character_set_results     

 

而这三项是可以通过set names utf8|set names gbk来设置!

当前连接的客户端的编码情况不会影响到数据库服务器本身的编码情况。确保client客户端的编码和数据库编码一致,从而避免出现存取乱码现象。

查看当前数据库的字符集库:

mysql>show charset;

+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |
| cp850    | DOS West European           | cp850_general_ci    |      1 |
| hp8      | HP West European            | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
| swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |
| ascii    | US ASCII                    | ascii_general_ci    |      1 |
| ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
| sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
| hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |
| tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |
| euckr    | EUC-KR Korean               | euckr_korean_ci     |      2 |
| koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 |
| gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |
| greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 |
| cp1250   | Windows Central European    | cp1250_general_ci   |      1 |
| gbk      | GBK Simplified Chinese      | gbk_chinese_ci      |      2 |
| latin5   | ISO 8859-9 Turkish          | latin5_turkish_ci   |      1 |
| armscii8 | ARMSCII-8 Armenian          | armscii8_general_ci |      1 |
| utf8     | UTF-8 Unicode               | utf8_general_ci     |      3 |
| ucs2     | UCS-2 Unicode               | ucs2_general_ci     |      2 |
| cp866    | DOS Russian                 | cp866_general_ci    |      1 |
| keybcs2  | DOS Kamenicky Czech-Slovak  | keybcs2_general_ci  |      1 |
| macce    | Mac Central European        | macce_general_ci    |      1 |
| macroman | Mac West European           | macroman_general_ci |      1 |
| cp852    | DOS Central European        | cp852_general_ci    |      1 |
| latin7   | ISO 8859-13 Baltic          | latin7_general_ci   |      1 |
| utf8mb4  | UTF-8 Unicode               | utf8mb4_general_ci  |      4 |
| cp1251   | Windows Cyrillic            | cp1251_general_ci   |      1 |
| utf16    | UTF-16 Unicode              | utf16_general_ci    |      4 |
| utf16le  | UTF-16LE Unicode            | utf16le_general_ci  |      4 |
| cp1256   | Windows Arabic              | cp1256_general_ci   |      1 |
| cp1257   | Windows Baltic              | cp1257_general_ci   |      1 |
| utf32    | UTF-32 Unicode              | utf32_general_ci    |      4 |
| binary   | Binary pseudo charset       | binary              |      1 |
| geostd8  | GEOSTD8 Georgian            | geostd8_general_ci  |      1 |
| cp932    | SJIS for Windows Japanese   | cp932_japanese_ci   |      2 |
| eucjpms  | UJIS for Windows Japanese   | eucjpms_japanese_ci |      3 |
+----------+-----------------------------+---------------------+--------+
40 rows in set (0.03 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值