问题描述
做了一个小程序,向mysql数据库中插入图片,并且可以显示图片。我的mysql数据库字符编码是gbk,eclipse默认的字符编码也是gbk。 查询语句:insert =conn.prepareStatement("insert into img_table (name,data) values (?,?)", Statement.RETURN_GENERATED_KEYS); 开始连接数据库的url是jdbc:mysql://localhost:3306/test 。出现错误:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Oá??????R2?X???6?R?’??'??-?P?5?|?e?z???m??7?M??héò?PTK?M??f=??í???D???y????r‘?' at line 1。 后来在url后加了句?useUnicode=true&characterEncoding=GBK 。 还是同样的问题。 在网上查了半天,在csdn中看到有类似问题,看到有人将gbk改成utf-8,解决问题,我试了一下,还真解决问题了,有点奇怪。不知道其中的道理,,,,求解?????
解决方案
你打开我的电脑-高级-环境变量 设置一下变量名:JAVA_TOOL_OPTIONS变量值:-Dfile.encoding=UTF-8 变量值可根据你的编码改变你计算机的根本编码格式
解决方案二:
你发给数据库服务器的数据采用的是UTF-8编码,而数据库的编码采用的是gbk,两者不一致,所以必须指定useUnicode=true&characterEncoding=UTF-8,告诉数据库服务器你的数据采用的是UTF-8编码,这样,当数据库服务器接收到你传过去的数据的时候,首先会采用UTF-8进行解码,然后再用gbk编码成字节码存入表中。当你从数据库查询数据的时候,数据库也是先用gbk进行解码,然后再用UTF-8编码成字节码,传送给客户端程序。总之,客户端采用的编码和数据库采用的编码不一致的话,就必须指定useUnicode=true&characterEncoding=UTF-8,否则会出现中文乱码。一致的话就不需要指定了,因为不需要进行编码的转换。下面是详细的解释,可以参考一下:http://www.cnblogs.com/xuefuwu/archive/2012/05/06/2486577.html