JavaEE技术点:MySQL编码问题
发布于:2019-05-08   作者:admin   浏览:455次

  我们在dos窗口下使用命令操作数据库时,当向数据库中插入的数据或从数据库中查询的数据中包含中文时,就会出现乱码。出现乱码的原因是我们安装MySQL数据库服务器时已经指定了编码是utf8,而dos窗口的默认编码是gbk,也就是说客户端与服务器的编码不一样,这样就导致了乱码。java培训的小编接下来就来为大家好好的介绍一下吧。

JavaEE技术点:MySQL编码问题

  使用如下命令可以查看MySQL数据库编码:


  lSHOWVARIABLESLIKE'char%'


  数据库的编码是utf8,下面我们来介绍其中两项编码:


  lcharacter_set_client=utf8:客户端通知数据库服务器它的编码方式:


  ?客户端即dos窗口发送的数据是gbk编码;


  ?MySQL使用character_set_client指定的编码来解读客户端发送过来的数据,例如编码为UTF8;


  ?结果:客户端发送过来的数据不是UTF8编码,那么就会出现乱码;


  lcharacter_set_results=utf8:数据库服务器向客户端发送的数据使用utf8编码:


  ?MySQL会以character_set_results指定的编码方式将待发送的数据编码,然后发送给客户端,例如编码为UTF8;


  ?客户端不使用UTF8来解读,而是使用gbk编码来解读;


  ?结果:客户端不是使用UTF8来解读,那么就会出现乱码。


  在dos窗口下向数据库服务器发送数据,数据中包含中文“张三”,“张三”在dos窗口下是gbk编码,但是数据库服务器使用utf8进行解码,就出现乱码,因此插入失败。


  解决办法:


  l让客户端发送utf8的数据:在dos窗口下,它的编码就是gbk,很难修改,因此该方法是行不通的;


  l将character_set_client的值修改为gbk:通过命令:setcharacter_set_client=gbk通知数据库服务器客户端的编码是gbk,但是该方法有一个局限性,它只在当前dos窗口中有效,只要退出访问mysql,那么再次登录时这个值需要重新设置。