当前位置:Gxlcms > 数据库问题 > 在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码。

在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码。

时间:2021-07-01 10:21:17 帮助过:2人阅读

这个问题困惑了我很久,也走了很多弯路。经过不断的探究终于找到了问题的解决方案。

第一:查看自己的mysql的编码。cmd—>mysql –uroot –p -->输入自己的mysql的密码—>输入 SHOWVARIABLES LIKE ‘character%‘;(如果装mysql时默认安装的话,会出现很多latin1,而不是我下面的全部utf-8,这是因为mysql默认的编码是latin1),如果全是Latin1的话,想要不出现中文乱码的话,就要改为utf-8了。

第二:更改Latin1为utf-8。找到安装mysql的路径下的my.ini文件。打开这个文件。

           分别在:[client] 下一行加入default-character-set=utf8

                          [mysql]下一行加入default-character-set=utf8

                         [mysqld]下一行加入character-set-server=utf8(这里注意较老的版本mysql加入default-character-                                   set=utf8是可以的,但5.5就不可以了,重启mysql就会报错)

                         找到# Thedefault character set that will be used when a new schema or table is

                             # created and no character set is defined

                           character-set-server= latin1改为character-set-server=utf8。

   这样就可以将Latin1为utf-8。重启mysql(右击我的电脑->管理->服务与应用程序->服务,找到mysql重启),当你重复第一步骤时会发现。大多数Latin1已经变为utf-8。可惜,可惜,有一项(character-set-server)还是为Latin1,这是由于当时装mysql时,默认安装时server编码默认为Latin1,这时,不要慌,mysql还是挺好的,可以重新设置编码。找到mysql的bin目录下的MySQLInstanceConfig.exe,启动这个就可以程序,将server的编码改为utf-8就行。重启mysql,执行第一步骤。会发现所有的Latin1已经改为utf-8(当然有一项filesystem就是binary,无需改的)。


技术分享

技术分享

第三:如果你使用的tomcat进行通信的话,由于tomcat的默认编码是iso8859-1。这是就需要修改tomcat的编码:修改tomcat下的conf/server.xml文件

找到如下代码:

<Connectorport="8080" protocol="HTTP/1.1"connectionTimeout="20000" redirectPort="8443" />

添加URIEncoding="UTF-8" 就行了。

第四:在传输中文时用

StringdeviceIntoTime=deviceInfEntity.getDeviceIntoTime();

//如果有中文,要进行URLEncoder.encode方法

params.addBodyParameter("deviceIntoTime",URLEncoder.encode(deviceIntoTime, "utf-8"));

接收时用:

String deviceIntoTime =URLDecoder.decode(request.getParameter("deviceIntoTime"),"utf-8");

第五:经过上面的步骤,存储到mysql的中文数据还是乱码,这是你的数据库建立有问题了。

比如我就出现:

Incorrect stringvalue: ‘\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...‘ for column ‘title‘ at row 1"

这时修改数据库的属性,选择charset为utf-8,collation为utf8-unicode-ci。记得还有表中涉及中文的列也要选择charset为utf-8,collation为utf8-unicode-ci。这样就行了。

技术分享




在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码。

标签:

人气教程排行