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。是用以解决国际上字符的一种多字节编码,它对英文使用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

对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。

GB2312是GBK的子集,GBK是GB18030的子集

GBK是包括中日韩字符的大字符集合

如果是中文的网站 推荐GB2312 GBK有时还是有点问题

为了避免所有乱码问题,应该采用UTF-8,将来要支持国际化也非常方便

UTF-8可以看作是大字符集,它包含了大部分文字的编码。

使用UTF-8的一个好处是其他地区的用户(如香港台湾)无需安装简体中文支持就能正常观看你的文字而不会出现乱码。

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 = 字符集

如果是通过JDBC 连接数据库,可以这样写URL:

URL=jdbc:mysql://localhost:3306/abs?useUnicode=true&characterEncoding=字符集

JSP 页面等终端也要设置相应的字符集

数据库的字符集可以修改mysql 的启动配置来指定字符集,也可以在create database 时加上

default character set 字符集来强制设置database 的字符集

通过这样的设置,整个数据写入读出流程中都统一了字符集,就不会出现乱码了

为什么从命令行直接写入中文不设置也不会出现乱码?

可以明确的是从命令行下,客户端、数据库连接、查询结果的字符集设置没有变化

输入的中文经过一系列转码又转回初始的字符集,我们查看到的当然不是乱码

但这并不代表中文在数据库里被正确作为中文字符存储

举例来说,现在有一个utf8 编码数据库,客户端连接使用GBK 编码,connection 使用默认

的ISO8859-1(也就是mysql 中的latin1),我们在客户端发送“中文”这个字符串,客户端

将发送一串GBK 格式的二进制码给connection 层,connection 层以ISO8859-1 格式将这段

二进制码发送给数据库,数据库将这段编码以utf8 格式存储下来,我们将这个字段以utf8

格式读取出来,肯定是得到乱码,也就是说中文数据在写入数据库时是以乱码形式存储的,

在同一个客户端进行查询操作时,做了一套和写入时相反的操作,错误的utf8 格式二进制

码又被转换成正确的GBK 码并正确显示出来。

/****************java、jsp中设置编码***************************/

首先说在java里那些地方能够设置编码

下面两种设置编码格式方法适用于jsp页面(*.jsp)

下面方式适合于jsp、servlet、action中(*.java)

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

下面适合html页面(*.htm;*.html)

Tomcate设置编码(server.xml)

mysql设置编码命令

SET character_set_client = utf8;

SET character_set_connection = utf8;

SET character_set_database = utf8;

SET character_set_results = utf8;/*这里要注意很有用*/

SET character_set_server = utf8;

SET collation_connection = utf8_bin;

SET collation_database = utf8_bin;

SET collation_server = utf8_bin;

my.ini中配置默认编码

default-character-set=utf8

连接数据库设置编码

jdbc:mysql://192.168.0.5:3306/test?characterEncoding=utf8

mysql 中日韩 乱码,mysql字符集乱码问题解决方法介绍相关推荐

  1. mysql 中日韩 乱码_mysql字符集及乱码问题

    MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用的. character-set-database:当 ...

  2. 中日韩大字符集文字编码的比较研究

    http://www.yyxx.sdu.edu.cn/content/guojihuiyi/guojhy-yinbs.htm 中日韩大字符集文字编码的比较研究 尹宝生 潘峰 徐立军 年新 汤蓉 沈阳航 ...

  3. 中日韩统一表意文字(CJK Unified Ideographs)[转]

    中日韩统一表意文字 中日韩统一表意文字 中日韩统一表 意文字(英语:CJK Unified Ideographs),目的是要把分别来自中文.日文.韩文.越文中,本质相同.形状一样或稍异的表意文字(主要 ...

  4. 中科罗伯特工业机器人_「聚焦中日韩产业博览会」丈夫看机器人,妻子忙采购...

    9月22日是第五届中日韩产业博览会的最后一天, 前来鲁台会展中心参观的市民依旧络绎不绝. 记者在一楼展厅看到, 各类机器人受到专业人员以及家长. 小朋友的追捧:二楼展厅内,美食. 美妆等充分满足市民的 ...

  5. php 正则表达式 匹配中日韩字符(GBK)

    转载链接:http://www.cnblogs.com/ITEagle/archive/2013/01/14/2859775.html 首先是这些非英文字符的编码范围: 这里是几个主要非英文语系字符范 ...

  6. 利用iTextSharp填写中文(中日韩)PDF表单(完整解决方案)

    或者说中日韩文)表单填写的问题,本不想回答这类问题,因为相关的注意事项都已经在我的博客里说了,但现在看来还是有必要再啰唆下了,如果再有问题的话,希望带着Money来问,拜托了. 下面这段代码根据iTe ...

  7. 记一次MySQL中Waiting for table metadata lock的解决方法

    记一次MySQL中Waiting for table metadata lock的解决方法 参考文章: (1)记一次MySQL中Waiting for table metadata lock的解决方法 ...

  8. MySQL中查询字段为空或者为null方法

    MySQL中查询字段为空或者为null方法 判断为null select * from table where column is null; 不为null: select * from table ...

  9. mysql 修改结束符_在MySQL中,用于设置MySQL结束符的关键字是【】

    在MySQL中,用于设置MySQL结束符的关键字是[] 答:DELIMITER 截至目前,还没有科学家从事克隆人的实验研究.() 答:× 智慧职教: 在选择压力表的量程时,一般不超过满量程的( ). ...

最新文章

  1. go语言mysql视频_Go语言实战流媒体视频网站
  2. iis7安装mysql_windows server 2008/2012安装php+iis7+mysql环境搭建
  3. Java import static静态导入
  4. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发
  5. asp如何将图片文件上传到mysql数据库中_怎样才能利用ASP把图片上传到数据库
  6. request中的技巧
  7. 制作单机俄罗斯游戏心得(三)
  8. 一个很好的网址,Visio 使用教程
  9. c语言 什么是指针变量,c语言指针详解:什么是指针?
  10. 大数据培训课(体验) Day02
  11. 家到学校路线图怎么画_PPT绘制家到学校路线图教程
  12. video标签设计vue视频播放器组件
  13. 【计算方法】解线性方程组的直接法
  14. Redis配置文件详解
  15. 云计算、大数据和人工智能
  16. excel小写转大写公式_会计工作再忙,也要学会这19个Excel公式!
  17. 计算机毕业设计选题推荐springboot+vue教师评教系统 ssm学生评教系统 教学质量评价系统 ssm教学评价系统 教师评价系统java
  18. 行测-判断推理-图形推理-位置规律-平移
  19. windows CMD快捷键:
  20. invariant 释义

热门文章

  1. 内存(RAM或ROM)和FLASH存储的真正区别总结
  2. linux 内存取证_内存取证工具-volatility、foremost
  3. 牛客网判断推理练习题
  4. DB2的rollforward前滚恢复
  5. A Convolutional Neural Network for Modelling Sentences之每日一篇
  6. ffmpeg 硬件加速视频转码指南
  7. Vue使用Echarts实现广西地图(旧版)
  8. 微信菜单 html页面添加的,微信公众号菜单进入的页面切换第二次失效
  9. Java 搭建高级画图板
  10. 调试平衡小车过程中间遇到的问题