返回
软件
分类

   mysql的默认编码是拉丁,5.查看字符集设置

日期: 2020-01-02 08:07 浏览次数 : 99

mysql编码怎么设置步骤?

   mysql的暗中同意编码是拉丁,每一回JSP制作网页用insert语句插入数据库时汉字都会呈现成问号,安装mysql后,运维服务并登录,使用show variables命令可查阅mysql数据库的暗中同意编码:

必赢备用网址 1

  由上航海用教室可以见到database和server的字符集使用了latin1编码方式,不扶助普通话,即存款和储蓄中文时会现身乱码。以下是命令行改革为utf-8编码的经过,以支撑汉语。

  (1)关闭mysql服务

  [plain] view plaincopy

  service mysql stop

  (2卡塔尔国改进 /etc/mysql/my.cnf (暗许的设置路线卡塔尔国

  [plain] view plaincopy

  vim /etc/mysql/my.cnf

  张开my.cnf后,在文件内的[mysqld]下扩充如下两行设置:

  [plain] view plaincopy

  character_set_server=utf8

  init_connect='SET NAMES utf8'

  (具体如截图所示卡塔尔国:

必赢备用网址 2

  保存退出。

  (3卡塔尔国 重新启航mysql服务

  [plain] view plaincopy

  service mysql start

  至此,实现修正暗许编码,登入mysql后重新利用show variable like '%character%'获得的输出效果如下:

必赢备用网址 3

  注

  具体操作和出口情况如下:

必赢备用网址 4

  消除方式:展开mysql安装目录:C:Program FilesMySQLMysql server5.5

  展开文件my.ini配置文件,找到 default-character-set=latin1 并改为:

  default-character-set=gbk,找到 character-set-server=latin1 并改为:

  character-set-server=gbk,更改完之后保存。

  末了:笔者的微机右击 “管理”进入之后选拔“服务和应用程序”下的“服务”

  找到“mysql”之后右击选取“重新开动”。

  把jsp页面中的<%@ a="" href="" import="java.util.*" language="java" page="" style="text-decoration: underline; color: rgb(0,82,157)" target="_blank">odin g="ISO-8859-1"%>改为

mysql的暗中同意编码是拉丁,每一遍JSP制作网页用insert语句插入数据库时汉字都会来得成问号,安装mysql后,运维服务并登...

原文:

本文化总同盟结了部分关于更正MySQL数据库的字符集的法子以致在实际付出中现身字符集乱码时候的片段消除办法。

Liunx下修改MySQL字符集:
1.查找MySQL的cnf文件的义务
find / -iname '*.cnf' -print

Liunx下修改MySQL字符集:

/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/texmf/web2c/texmf.cnf
/usr/share/texmf/web2c/mktex.cnf
/usr/share/texmf/web2c/fmtutil.cnf
/usr/share/texmf/tex/xmltex/xmltexfmtutil.cnf
/usr/share/texmf/tex/jadetex/jadefmtutil.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-innodb-heavy-4G.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-large.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-small.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-medium.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-huge.cnf

1.查找MySQL的cnf文件的岗位

  1. 拷贝 small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf此中的叁个到/etc下,命名称为my.cnf
    cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

  2. 修改my.cnf
    vi /etc/my.cnf
    在[client]下添加
    default-character-set=utf8
    在[mysqld]下添加
    default-character-set=utf8

find / -iname '*.cnf' -print

4.重复启航MySQL
[root@bogon ~]# /etc/rc.d/init.d/mysql restart
Shutting down MySQL                                         [ 确定 ]
Starting MySQL.                                             [ 确定 ]
[root@bogon ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.1.22-rc-community-log MySQL Community Edition (GPL)
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/texmf/web2c/texmf.cnf
/usr/share/texmf/web2c/mktex.cnf
/usr/share/texmf/web2c/fmtutil.cnf
/usr/share/texmf/tex/xmltex/xmltexfmtutil.cnf
/usr/share/texmf/tex/jadetex/jadefmtutil.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-innodb-heavy-4G.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-large.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-small.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-medium.cnf
/usr/share/doc/MySQL-server-community-5.1.22/my-huge.cnf

5.查看字符集设置
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.02 sec)
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                        |
| character_sets_dir        | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)
mysql>

  1. 拷贝 small.cnf、my-medium.cnf、my-huge.cnf、my-innodb-heavy-4G.cnf此中的三个到/etc下,命名称为my.cnf

别的的部分装置方法:

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

更正数据库的字符集
    mysql>use mydb
    mysql>alter database mydb character set utf-8;
创造数据库钦点数据库的字符集
    mysql>create database mydb character set utf-8;

  1. 修改my.cnf

透过配备文件改良:
修改/var/lib/mysql/mydb/db.opt
default-character-set=latin1
default-collation=latin1_swedish_ci

default-character-set=utf8
default-collation=utf8_general_ci
重起MySQL:
[root@bogon ~]# /etc/rc.d/init.d/mysql restart

vi /etc/my.cnf

通过MySQL命令行校勘:
mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)
查看: 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                        |
| character_必赢备用网址 ,sets_dir        | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.04 sec)

在[client]下添加


default-character-set=utf8

【知识性随笔转发】
MYSQL 字符集难题

在[mysqld]下添加

MySQL的字符集帮衬(Character Set Support卡塔尔国有四个方面:
      字符集(Character set卡塔尔和排序形式(Collation卡塔尔。
对于字符集的援救细化到两个档案的次序:
      服务器(server),数据库(database),数据表(table)和连接(connection)。
1.MySQL暗许字符集
MySQL对于字符集的钦点能够细化到二个数据库,一张表,一列,应该用什么字符集。
只是,古板的程序在开创数据库和数目表时并未选取那么复杂的配备,它们用的是暗许的配备,那么,暗中认可的安插从何而来呢?     (1卡塔尔(قطر‎编写翻译MySQL 时,钦赐了叁个暗许的字符集,那些字符集是 latin1;
     (2卡塔尔(英语:State of Qatar)安装MySQL 时,能够在布署文件 (my.ini卡塔尔中钦点二个暗中认可的的字符集,假如没钦定,那几个值世袭自编写翻译时钦点的;
     (3卡塔尔国运营mysqld 时,能够在命令行参数中钦赐八个私下认可的的字符集,借使没钦命,那些值世襲自配置文件中的配置,此时character_set_server 被设定为这几个暗中同意的字符集;
     (4卡塔尔(英语:State of Qatar)当成立八个新的数据库时,除非鲜明钦点,那一个数据库的字符集被缺省设定为character_set_server;
     (5卡塔尔当选定了二个数据库时,character_set_database 被设定为这几个数据库暗中同意的字符集;
     (6卡塔尔(قطر‎在此个数据Curry创设一张表时,表私下认可的字符集被设定为 character_set_database,也正是这么些数据库暗中认可的字符集;
     (7卡塔尔(英语:State of Qatar)当在表内设置大器晚成栏时,除非分明钦赐,不然此栏缺省的字符集正是表暗中认可的字符集;
归纳的下结论一下,假如哪个地方都不改革,那么具有的数据库的全数表的富有栏位的都用
latin1 存款和储蓄,可是我们只要设置 MySQL,常常都会选取多语言协理,也便是说,安装程序会自行在布置文件中把
default_character_set 设置为 UTF-8,那保险了缺省情形下,全部的数据库的全体表的享有栏位的都用 UTF-8 存款和储蓄。
2.查看私下认可字符集(私下认可情况下,mysql的字符集是latin1(ISO_8859_1)
平常,查看系统的字符集和排序方式的设定能够通过上边包车型大巴两条命令:
      mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------+
| 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                             |
| character_sets_dir        | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3.改革暗中认可字符集
(1卡塔尔(قطر‎ 最简便易行的修改章程,正是改进mysql的my.ini文件中的字符集键值,
如     default-character-set = utf8
       character_set_server = utf8
    修正完后,重启mysql的服务,service mysql restart
    使用 mysql> SHOW VARAV4IABLES LIKE 'character%';查看,开掘数据库编码均已改成utf8
+--------------------------+---------------------------------+
| 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                             |
| character_sets_dir        | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
    (2卡塔尔 还应该有风度翩翩种纠正字符集的法子,正是使用mysql的下令
    mysql> SET character_set_client = utf8 ;

default-character-set=utf8

MySQL中关系的多少个字符集

4.再一次开动MySQL

character-set-server/default-character-set:服务器字符集,暗中同意意况下所运用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
预先级依次增添。所以日常景观下只要求安装character-set-server,而在创制数据库和表时不特意钦点字符集,那样统一运用character-set-server字符集。
character-set-client:客商端的字符集。客户端暗中同意字符集。当客商端向服务器发送供给时,乞请以该字符集实行编码。
character-set-results:结果字符集。服务器向客商端再次来到结果要么音信时,结果以该字符集举行编码。
在顾客端,若无定义character-set-results,则动用character-set-client字符集作为暗中同意的字符集。所以只供给设置character-set-client字符集。

[[email protected] ~]# /etc/rc.d/init.d/mysql restart
Shutting down MySQL                                         [ 确定 ]
Starting MySQL.                                             [ 确定 ]
[[email protected] ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1
Server version: 5.1.22-rc-community-log MySQL Community Edition (GPL)
Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

要管理中文,则足以将character-set-server和character-set-client均安装为GB2312,如若要相同的时间管理多国语言,则设置为UTF8。

5.查看字符集设置

有关MySQL的中文标题

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.02 sec)
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                        |
| character_sets_dir        | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)

缓慢解决乱码的章程是,在奉行SQL语句早先,将MySQL以下七个种类参数设置为与服务器字符集character-set-server相像的字符集。
character_set_client:客商端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。
安装这些种类参数通过向MySQL发送语句:set names gb2312

其余的有的装置格局:

关于GBK、GB2312、UTF8

修正数据库的字符集

UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。是用来减轻国际上字符的风华正茂种多字节编码,它对阿尔巴尼亚语使用8位(即一个字节),中文使用24为(四个字节)来编码。UTF-8蕴含环球享有国家急需接受的字符,是国际编码,通用性强。UTF-8编码的文字能够在多个国家辅助UTF8字符集的浏览器上海展览中心示。如,倘诺是UTF8编码,则在匈牙利人的匈牙利(Magyarország卡塔尔国语IE上也能显得汉语,他们不须要下载IE的中文语言扶植包。

mysql>use mydb

GBK是国标GB2312底蕴上扩大容积后杰出GB2312的正统。GBK的文字编码是用双字节来代表的,即无论中、Turkey语字符均使用双字节来代表,为了不相同汉语,将其最高位都设定成1。GBK满含全部中文字符,是国家编码,通用性比UTF8差,但是UTF8占用的数据库比GBD大。

mysql>alter database mydb character set utf-8;

GBK、GB2312等与UTF8之间都一定要透过Unicode编码本事互相转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312

创制数据库内定数据库的字符集

对此贰个网址、论坛来讲,若是Romania语字符超多,则提出选择UTF-8节省空间。不过以后游人如织论坛的插件日常只援救GBK。

mysql>create database mydb character set utf-8;

GB2312是GBK的子集,GBK是GB18030的子集
GBK是归纳中国和东瀛韩字符的大字符集合
假使是普通话的网址 推荐GB2312 GBK有时依旧有一些难题
为了幸免全数乱码难题,应该使用UTF-8,未来要支持国际化也足够方便
UTF-8能够当做是大字符集,它富含了大多文字的编码。
运用UTF-8的一个功利是别的地点的客户(如香港(Hong Kong卡塔尔国湖南)无需安装简体汉语帮忙就能够健康观望你的文字而不会情不自禁乱码。

透过配备文件改正:

gb2312是简体汉语的码
gbk协助简体普通话及繁体普通话
big5支撑繁体汉语
utf-8扶助大约全数字符

修改/var/lib/mysql/mydb/db.opt

率先深入分析乱码的情形
1.写入数据库时作为乱码写入
2.查询结果以乱码重返
到底在发出乱码时是哪黄金时代种情状吗?
大家先在mysql 命令行下输入
show variables like '%char%';
翻开mysql 字符集设置情况:

default-character-set=latin1

mysql> show variables like '%char%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | gbk                                    | 
| character_set_connection | gbk                                    | 
| character_set_database   | gbk                                    | 
| character_set_filesystem | binary                                 | 
| character_set_results    | gbk                                    | 
| character_set_server     | gbk                                    | 
| character_set_system     | utf8                                   | 
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ | 
   mysql的默认编码是拉丁,5.查看字符集设置。+--------------------------+----------------------------------------+

default-collation=latin1_swedish_ci

在查询结果中能够看出mysql 数据库系统中型大巴户端、数据库连接、数据库、文件系统、查询
结果、服务器、系统的字符集设置
在那,文件系统字符集是定点的,系统、服务器的字符集在设置时规定,与乱码难点非亲非故
乱码的难题与顾客端、数据库连接、数据库、查询结果的字符集设置有关
*注:顾客端是看访问mysql 数据库的章程,通过命令行访谈,命令行窗口就是客商端,通
过JDBC 等连接访谈,程序正是客户端
我们在向mysql 写入普通话数据时,在顾客端、数据库连接、写入数据库时分别要开展编码转

在实行查询时,在回到结果、数据库连接、客商端独家打开编码调换
几日前我们应当了然,乱码发生在数据库、顾客端、查询结果以至数据库连接那中间一个或多
个环节
接下去大家来解决那么些难点
在报到数据库时,大家用mysql --default-character-set=字符集-u root -p 进行连接,这个时候大家
再用show variables like '%char%';命令查看字符集设置景况,能够窥见客商端、数据库连接、
询问结果的字符集已经设置成登陆时精选的字符集了
尽管是曾经报到了,能够运用set names 字符集;命令来贯彻上述作用,等同于上边包车型客车命令:
set character_set_client = 字符集
set character_set_connection = 字符集
set character_set_results = 字符集

黄金年代旦蒙受上述命令无效时,也可利用生机勃勃种最简便易行最根本的秘诀:

default-character-set=utf8

一、Windows

default-collation=utf8_general_ci

1、中止MySQL服务
2、在MySQL的设置目录下找到my.ini,若无就把my-medium.ini复制为四个my.ini就可以
3、打开my.ini以后,在[client]和[mysqld]上边均增加default-character-set=utf8,保存并关闭
4、启动MySQL服务

重起MySQL:

要透彻清除编码难点,必得使

[[email protected] ~]# /etc/rc.d/init.d/mysql restart

| character_set_client     | gbk                                    | 
| character_set_connection | gbk                                    | 
| character_set_database   | gbk                                    | 
| character_set_results    | gbk                                    | 
| character_set_server     | gbk                                    | 
| character_set_system     | utf8     

透过MySQL命令行修正:

那些编码相平等,都统意气风发。

mysql> set character_set_client=utf8;
Query OK, 0 rows affected (0.00 sec)

若果是通过JDBC 连接数据库,能够如此写UWranglerL:
URL=jdbc:mysql://localhost:3306/abs?useUnicode=true&characterEncoding=字符集
JSP 页面等终端也要设置相应的字符集
数据库的字符集能够改善mysql 的启航配置来钦命字符集,也得以在create database 时增多
default character set 字符集来强制安装database 的字符集
透过那样的装置,整个数据写入读出流程中都统一了字符集,就不会晤世乱码了
何以从命令行直接写入中文不安装也不会冒出乱码?
能够一望而知的是从命令行下,顾客端、数据库连接、查询结果的字符集设置未有转换
输入的中文经过一文山会海转码又折路重回最早的字符集,我们查看见的自然不是乱码
但那并不表示普通话在数据Curry被科学作为粤语字符存储
比释尊讲,今后有三个utf8 编码数据库,顾客端连接使用GBK 编码,connection 使用暗中同意
的ISO8859-1(也正是mysql 中的latin1),大家在客商端发送“中文”那几个字符串,顾客端
将发送风华正茂串GBK 格式的二进制码给connection 层,connection 层以ISO8859-1 格式将这段
二进制码发送给数据库,数据库将这段编码以utf8 格式存储下来,咱们将以此字段以utf8
格式读收取来,肯定是赢得乱码,也正是说普通话数据在写入数据库时是以乱码方式积累的,
在同三个客商端进行查询操作时,做了生机勃勃套和写入时反而的操作,错误的utf8 格式二进制
码又被调换来准确的GBK 码并不错突显出来。

mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)

mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)

查看:

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                        |
| character_sets_dir        | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name         | Value            |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database    | utf8_general_ci |
| collation_server      | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.04 sec)


【知识性随笔转发】

MYSQL 字符集难点

MySQL的字符集援助(Character Set Support卡塔尔(قطر‎有四个地点:

字符集(Character set卡塔尔(قطر‎和排序格局(Collation卡塔尔(英语:State of Qatar)。

对于字符集的帮衬细化到多个档次:

服务器(server),数据库(database),数据表(table)和连接(connection)。

1.MySQL暗中同意字符集

MySQL对于字符集的钦点可以细化到三个数据库,一张表,一列,应该用什么样字符集。不过,古板的主次在成立数据库和数据表时并未运用那么复杂的布局,它们用的是暗中认可的安插,那么,暗许的安排从何而来呢?

(1卡塔尔(英语:State of Qatar)编写翻译MySQL 时,钦命了二个暗中认可的字符集,这么些字符集是 latin1;

(2卡塔尔国安装MySQL 时,能够在布署文件 (my.ini卡塔尔中钦点三个私下认可的的字符集,假设没钦赐,那几个值世袭自编译时钦定的;

(3卡塔尔(英语:State of Qatar)运维mysqld 时,能够在命令行参数中内定三个暗中认可的的字符集,借使没钦定,这几个值世襲自配置文件中的配置,这时character_set_server 被设定为那个暗中认可的字符集;

(4卡塔尔当创立叁个新的数据库时,除非明显内定,那几个数据库的字符集被缺省设定为character_set_server;

(5卡塔尔当选定了叁个数据库时,character_set_database 被设定为那么些数据库暗许的字符集;

(6卡塔尔国在此个数据Curry制造一张表时,表暗中同意的字符集被设定为 character_set_database,也即是其风华正茂数据库暗中同意的字符集;

(7卡塔尔国当在表内设置风姿罗曼蒂克栏时,除非分明钦赐,不然此栏缺省的字符集正是表暗中同意的字符集;

总结的计算一下,要是哪里都不改造,那么具有的数据库的全体表的享有栏位的都用latin1 存款和储蓄,不过大家只要设置 MySQL,经常都会筛选多语言帮忙,也正是说,安装程序会活动在布局文件中把 default_character_set 设置为 UTF-8,那保障了缺省景况下,全数的数据库的全部表的保有栏位的都用 UTF-8 存款和储蓄。

2.查看暗中认可字符集(暗中认可景况下,mysql的字符集是latin1(ISO_8859_1卡塔尔(قطر‎,日常,查看系统的字符集和排序方式的设定能够经过下边包车型大巴两条命令:

mysql> SHOW VARIABLES LIKE 'character%';

+--------------------------+----------------------------------+
| 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                             |
| character_sets_dir       | D:"mysql-5.0.37"share"charsets"  |
+--------------------------+----------------------------------+

mysql> SHOW VARIABLES LIKE 'collation_%';

+----------------------+------------------+
| Variable_name        | Value            |
+----------------------+------------------+
| collation_connection | utf8_general_ci  |
| collation_database   | utf8_general_ci  |
| collation_server     | utf8_general_ci  |
+----------------------+------------------+

3.改正暗中认可字符集

(1卡塔尔(قطر‎ 最轻巧易行的改换章程,正是改良mysql的my.ini文件中的字符集键值,如

default-character-set = utf8
character_set_server = utf8

改正完后,重启mysql的服务,service mysql restart

动用 mysql> SHOW VA昂科雷IABLES LIKE 'character%';查看,开掘数据库编码均已改成utf8

+--------------------------+---------------------------------+
| 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                            |
| character_sets_dir       | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+

(2卡塔尔 还会有风流倜傥种改革字符集的方法,便是采取mysql的授命

mysql> SET character_set_client = utf8 ;
 
MySQL中涉嫌的多少个字符集
 
character-set-server/default-character-set:服务器字符集,私下认可景况下所运用的。
character-set-database:数据库字符集。
character-set-table:数据库表字符集。
预先级依次增加。所以通常情形下只要求设置character-set-server,而在成立数据库和表时不特别钦定字符集,那样统后生可畏接受character-set-server字符集。
character-set-client:顾客端的字符集。客商端暗许字符集。当客商端向服务器发送央求时,恳求以该字符集进行编码。
character-set-results:结果字符集。服务器向客商端再次回到结果可能消息时,结果以该字符集进行编码。
在客商端,若无定义character-set-results,则使用character-set-client字符集作为私下认可的字符集。所以只必要安装character-set-client字符集。
 
要拍卖普通话,则能够将character-set-server和character-set-client均设置为GB2312,借使要相同的时候管理多国语言,则设置为UTF8。
 
关于MySQL的华语难点
 
解决乱码的法子是,在实践SQL语句从前,将MySQL以下四个系统参数设置为与服务器字符集character-set-server相符的字符集。

character_set_client:顾客端的字符集。
character_set_results:结果字符集。
character_set_connection:连接字符集。

安装那五个系统参数通过向MySQL发送语句:set names gb2312
 
关于GBK、GB2312、UTF8

UTF- 8:Unicode Transformation Format-8bit,允许含BOM,但日常不含BOM。是用以缓和国际上字符的豆蔻梢头种多字节编码,它对乌Crane语使用8位(即三个字节),中文使用24为(八个字节)来编码。UTF-8蕴涵全世界全体国家必要使用的字符,是国际编码,通用性强。UTF-8编码的文字能够在各个国家援助UTF8字符集的浏览器上海展览中心示。如,假使是UTF8编码,则在英国人的罗马尼亚语IE上也能显示粤语,他们不须要下载IE的华语语言扶持包。
 
GBK是国标GB2312底子上扩大容积后非凡GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、土耳其语字符均使用双字节来代表,为了不一样普通话,将其最高位都设定成1。GBK包蕴全部华语字符,是国家编码,通用性比UTF8差,可是UTF8占用的数据库比GBD大。
 
GBK、GB2312等与UTF8之间都不得不通过Unicode编码手艺相互调换:

GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
 
对此二个网址、论坛来讲,假设Romania语字符很多,则提出利用UTF-8节省空间。但是今后广大论坛的插件平日只帮助GBK。
 
GB2312是GBK的子集,GBK是GB18030的子集;GBK是归纳中国和东瀛韩字符的大字符集结。

假设是普通话的网址 推荐GB2312 GBK一时依旧稍稍难点,为了防止所有乱码难题,应该运用UTF-8,未来要扶持国际化也万分方便。

UTF-8能够视作是大字符集,它包括了好多文字的编码。使用UTF-8的多少个功利是其他地点的客商(如Hong Kong吉林)没有须求安装简体中文扶助就会平常观望你的文字而不会不能自已乱码。
 
gb2312是简体汉语的码

gbk扶植简体中文及繁体中文

big5支撑繁体汉语

utf-8支持大约全体字符
 
率先深入分析乱码的景色

1.写入数据库时作为乱码写入

2.查询结果以乱码重临

到底在发生乱码时是哪一种情景吧?

我们先在mysql 命令行下输入

show variables like '%char%';

翻看mysql 字符集设置情状:
 
mysql> show variables like '%char%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | gbk                                    |
| character_set_connection | gbk                                    |
| character_set_database   | gbk                                    |
| character_set_filesystem | binary                                 |
| character_set_results    | gbk                                    |
| character_set_server     | gbk                                    |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
 
在询问结果中能够看出mysql 数据库系统中型地铁户端、数据库连接、数据库、文件系统、查询结果、服务器、系统的字符集设置在这里边,文件系统字符集是定位的,系统、服务器的字符集在装置时规定,与乱码难题非亲非故乱码的难点与顾客端、数据库连接、数据库、查询结果的字符集设置有关。

(*注:顾客端是看访问mysql数据库的法子,通过命令行访谈,命令行窗口正是客商端,通过JDBC等连接待上访谈,程序正是顾客端,我们在向mysql写入汉语数据时,在客商端、数据库连接、写入数据库时分别要拓宽编码转变,在履行查询时,在回去结果、数据库连接、客商端独家开展编码转换。)

几眼下咱们理应知道,乱码爆发在数据库、顾客端、查询结果以致数据库连接那中间五个或七个环节。

接下去大家的话下什么缓慢解决那个难点。

在报到数据库时,我们用 mysql --default-character-set=字符集-u root -p 实行三番五次,这个时候大家再用

show variables like '%char%';

命令查看字符集设置境况,能够窥见客商端、数据库连接、查询结果的字符集已经设置成登入时精选的字符集了。

举个例子是现已报到了,可以动用:

set names 字符集;

一声令下来落到实处上述功效,等同于下边包车型地铁吩咐:

set character_set_client = 字符集

set character_set_connection = 字符集

set character_set_results = 字符集
 
倘使境遇上述命令无效时,也可选择意气风发种最简便最干净的诀要:
 
一、Windows
 
1、中止MySQL服务

2、在MySQL的设置目录下找到my.ini,如果未有就把my-medium.ini复制为四个my.ini就可以

3、打开my.ini以后,在[client]和[mysqld]上边均拉长default-character-set=utf8,保存并关闭

4、启动MySQL服务
 
要深透化解编码难题,必需使
 
| character_set_client     | gbk                                    |
| character_set_connection | gbk                                    |
| character_set_database   | gbk                                    |
| character_set_results    | gbk                                    |
| character_set_server     | gbk                                    |
| character_set_system     | utf8    
 
这个编码相平等,都合併。

你可能感兴趣的稿子

  • 什么样查看MySQL数据库字符集
  • 小结MySQL数据库服务器渐渐变慢的原委和解决办法
  • 合理利用MySQL数据库索引以使数据库高效运转
  • 什么样定位,肃清和幸免MySQL数据库质量难点
  • 忘却PHPnow的MySQL数据库密码的消除办法
  • mysql服务器主从数据库同步布置
  • Mysql 数据库缓存cache功用深入分析,调节和测量试验以至品质总计
  • 关于mysql数据库大小写敏感的主题材料

Liunx下修改MySQL字符集 : 1.查...