,,MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

,,MySQL字符集 GBK、GB2312、UTF8区别 解决MYSQL中文乱码问题

中文MYSQL乱码的原因有很多。我们之前发表过很多相关文章。本文较为详细地介绍了一些关于mysql的知识。

MySQL中涉及的几个字符集

字符集-服务器/默认字符集:服务器字符集,默认采用。字符集数据库:数据库字符集。字符集表:数据库表字符集。优先级依次增加。所以一般情况下只需要设置字符集服务器,在创建数据库和表时不特别指定字符集,统一采用字符集服务器字符集。字符集客户端:客户端的字符集。客户端默认字符集。当客户端向服务器发送请求时,请求被编码到这个字符集中。字符集结果:结果字符集。当服务器向客户机返回结果或信息时,结果用这个字符集编码。在客户端,如果没有定义character-set-results,则采用character-set-client的字符集作为默认字符集。所以你只需要设置字符集客户端字符集。

要处理中文,您可以将字符集服务器和字符集客户端都设置为GB2312,或者如果您想同时处理多种语言,则设置为UTF8。

关于MySQL的中文问题

乱码的解决方法是在执行SQL语句之前,将以下三个MySQL系统参数设置为与服务器字符集相同的字符集-set-server。字符集客户端:客户端的字符集。字符集结果:结果字符集。Character_set_connection:连接字符集。通过向MySQL发送一条语句来设置这三个系统参数:set names gb2312。

关于GBK、GB2312、UTF8

UTF-8: Unicode转换格式-8bit,允许BOM,但通常不允许BOM。它是一个多字节代码,用于解决国际字符。英语使用8位(即一个字节),中文使用24位(三个字节)。UTF 8包含世界上所有国家都需要使用的字符。它是一种通用性很强的国际编码。UTF-8编码的文本可以在不同国家支持UTF8字符集的浏览器上显示。比如说如果是UTF8编码,外国人的英文IE上可以显示中文,就不需要下载IE的中文语言支持包了。

GBK是基于国标GB2312的标准,扩展后兼容GB2312。GBK的字符编码用双字节表示,即中英文字符都用双字节表示。为了区分中文,GBK的最高位设置为1。GBK包含所有汉字,是一个国家代码。它的通用性比UTF8差,但是UTF8占用的数据库比GBD大。

GBK、GB2312等。和UTF8必须用Unicode编码才能相互转换:GBK,GB2312-Unicode-UTF8-Unicode-gbk,GB 2312。

对于一个网站或论坛,如果有很多英文字符,建议使用UTF-8以节省空间。但是,现在很多论坛的插件一般只支持GBK。

GB2312是GBK的子集,GBK是GB18030的子集,GBK是包括中文、日文和韩文字符的大型字符集。如果是中文网站推荐的,有时候还是有些问题。为了避免所有的乱码,应该采用UTF-8。以后支持国际化也很方便。UTF 8可以看作是一个大字符集,它包含了大部分字符的编码。使用UTF-8的一个好处是,其他地区(如台湾省、香港)的用户可以正常观看你的文本,没有乱码,无需安装简体中文支持。

Gb2312是简体中文的代码。gbk支持简体中文和繁体中文。big5支持繁体中文utf-8几乎支持所有字符。

首先分析乱码的情况 1.写入数据库时写成乱码2。查询结果作为乱码返回。出现乱码是什么情况?让我们首先在mysql命令行输入像“%char%”这样的show变量;检查mysql字符集:

mysql显示像“%char%”这样的变量;---|变量名称|值|-|字符集客户端| gbk | |字符集连接| gbk | |字符集数据库| gbk | |字符集文件系统|二进制| |字符集结果| gbk | |字符集服务器| gbk | |字符集系统| utf8 | |字符集目录|/usr/local/MySQL/share/MySQL/charsets/|--

在查询结果中可以看到mysql数据库系统中的客户端、数据库连接、数据库、文件系统、查询结果、服务器、系统的字符集都是在这里设置的,文件系统的字符集是固定的,系统和服务器的字符集是在安装时确定的。乱码问题和乱码问题没有关系。乱码问题与客户机、数据库连接、数据库和查询结果的字符集设置有关。*注意:客户端取决于访问mysql数据库的方式。通过命令行访问时,命令行窗口就是客户端。当通过JDBC和其他连接访问时,程序就是客户端。当我们将中文数据写入mysql时,客户端、数据库连接、写入数据库都需要进行代码转换。执行查询时,返回结果、数据库连接、客户端都需要进行代码转换。现在我们应该知道乱码发生在数据库、客户端、查询结果、数据库连接的一个或多个环节。接下来,我们来解决这个问题。在登录数据库时,我们使用MySQL-default-character-set=-set=character set-u root-p进行连接,然后使用类似“%char%”的show变量;查看命令字符集,可以发现客户端、数据库连接和查询结果的字符集已经设置为登录时选择的字符集。如果您已经登录,您可以使用集合名称字符集。命令等效于以下命令:set character _ set _ client=character set set character _ set _ connection=character set character _ set _ results=character set。如果是通过JDBC连接到数据库,可以写URL:URL=JDBC:MySQL://localhost:306/ABS?Unicode=TrueCharacterencoding=字符集JSP页面等终端也要设置对应字符集数据库的字符集。您可以修改mysql的启动配置来指定字符集。您也可以在创建数据库时添加默认字符集字符集,以强制使用数据库的字符集。这样的设置,在整个数据写入和读取过程中,字符集是统一的,所以不会出现乱码。为什么不用设置直接从命令行写中文没有乱码?可以明确的是,从命令行来看,客户端的字符集设置、数据库连接和查询结果都没有改变。经过一系列的转码后,输入的中文又转回原来的字符集。当然,我们看到的并不是乱码,但这并不意味着中文在数据库中被正确地存储为汉字。例如,现在有一个utf8编码的数据库,客户端连接使用GBK编码。使用connection默认的ISO8859-1(也就是mysql中的latin1),我们在客户端发送字符串“Chinese”,客户端会将一串GBK格式的二进制代码发送到连接层,连接层会将这个二进制代码以ISO8859-1格式发送到数据库。数据库的代码以utf8格式存储。当我们以utf8格式读出这个字段时,它一定是乱码。也就是说,中文数据在写入数据库时是以乱码形式存储的。当同一个客户端执行查询操作时,它执行一组与编写时相反的操作,错误的utf8格式二进制代码被转换为正确的GBK码并正确显示。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • pymysql菜鸟教程,pymysql 使用
  • pymysql菜鸟教程,pymysql 使用,pymysql模块使用简介与示例
  • mysql锁实现,mysql锁算法
  • mysql锁实现,mysql锁算法,MySQL锁机制与用法分析
  • mysql连接报错10061,mysql连接错误10060
  • mysql连接报错10061,mysql连接错误10060,MYSQL无法连接 提示10055错误的解决方法
  • mysql连接报10060错误,mysql连接报错10055
  • mysql连接报10060错误,mysql连接报错10055,MySQL连接异常报10061错误问题解决
  • mysql辅助索引和主键索引,mysql 主键 外键 索引
  • mysql辅助索引和主键索引,mysql 主键 外键 索引,MySQL索引之主键索引
  • MySQL语句大全,mysql常见语句总结
  • MySQL语句大全,mysql常见语句总结,MySQL语句整理及汇总介绍
  • mysql触发器的使用方法实验报告,mysql中触发器的使用
  • 留言与评论(共有 条评论)
       
    验证码: