文章引用自http://blog.csdn.net/hzw19920329/article/details/53391421
本文章为个人的学习备忘
今天遇到个很头疼的问题,在向MySql数据库插入中文的时候,总是报下面的错误:
java.sql.SQLException: Incorrect string value: '\xE5\xB8\x8C\xE8\xB4\x9D...' for column 'nickName' at row 1
特此查看资料说是数据库的编码字符集不是utf-8导致的,但是从网上找了好多修改数据编码的方法都不太奏效,下面是我自己的修改方法,在此做个总结:
(1):进入mysql的安装目录,找到my-default.ini或者my.ini配置文件,你可以将my-default.ini修改成my.ini,影响不大的;
(2):我的my.ini只有一个[mysqld]标签,其他均处于注释状态,我们在my.ini里面做两件事
在[mysqld]标签下添加:character-set-server=utf8
增加一个[client]标签,并且在[client]标签下添加:default-character-set=utf8
(3):到任务列表中重启mysql服务;
(4):进入dos界面,登录数据库,输入命令:show variables like "%char%";如果dos界面出现的下图所示结果,说明你修改mysql编码成功啦!
image
(5):重启mysql服务;
(6):如果这时候你向数据库中插入中文字符还是会出现乱码或者还是会出现java.sql.SQLException: Incorrect string value: '\xE5\xB8\x8C\xE8\xB4\x9D...' for column 'nickName' at row 1异常的话,你还需要尝试下面几个步骤:
(7):重新创建数据库(我使用的是Navicat创建的),将数据库的字符集设置成:utf8 -- UTF-8 Unicode,将排序规则设置成:utf8_unicode_ci或者utf8_general_ci都可以;
image
(8):如果这时候上面的异常以及乱码问题还没解决的话,那么我们还需要修改连接数据库的字符集啦,我把我连接mysql的url贴出来:
[java] view plaincopy
<embed id="ZeroClipboardMovie_1" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="user-select: text !important; animation-duration: 0.001s; animation-name: playerInserted; box-sizing: border-box;">
-
public static final String DRIVER = "com.mysql.jdbc.Driver";
-
public static final String DATABASENAME = "wangyimusic";
-
public static final String URL = "jdbc:mysql://localhost:3306/"+DATABASENAME+"?useunicode=true&characterEncoding=utf8";
-
public static final String USERNAME = "root";
-
public static final String PASSWORD = "123456";
好了,上面就是我解决mysql数据库编码问题的方法了,如果你遇到此类问题,可以尝试下,还是不行的话,欢迎留言探讨,转载请注明出处,谢谢!!
网友评论