Mysql5写中文乱码问题解决

傲冰雪白杨树

傲冰雪白杨树

2016-01-29 14:49

Mysql5写中文乱码问题解决,Mysql5写中文乱码问题解决
我插入Mysql5的中文一直是乱码。
但是直接使用mysqlAdmin,EMS等工具插入DB就不是乱码。而且我还可以使用程序正常地读出来。

原因是:
DBDriverClass=com.mysql.jdbc.Driver
DBURL=jdbc:mysql://10.4.2.52:3306/srx?useUnicode=true&characterEncoding=utf-8
这样的URL中useUnicode=true和characterEncoding=utf-8两个属性都不好用。

所以,数据库服务器无法从URL中获知Client使用了哪个编码。于是就使用数据库服务器上默认的latin也就是iso-8859-1编码来解析用户发送的sql语句。这样,原本用户是用操作系统的编码,但是服务器硬给转成ISO-8859-1,所以就乱码了。

Client端只要配置好
useUnicode=true
characterEncoding=utf-8
这两个属性。只要指定了,就不会乱码。utf-8可以,gb2312可以,gbk可以。指定了什么,Client就默认以这种
编码转换SQL语句,服务器也就知道怎么转会去。


怎么看客户端发送给服务器的SQL使用什么编码呢?

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/mysql/)

在客户端写个程序,执行SQL语句:
public void select() throws SQLException {
        ResultSet rs = this.cnn.createStatement().executeQuery("SHOW VARIABLES LIKE 'character_set_%'");
        while(rs.next()){
            System.out.println(rs.getString(1)+","+rs.getString(2));
        }
        rs.close();
    }
没有配置characterEncoding=utf-8之前,我使用的是DBURL=jdbc:mysql://10.4.2.52:3306/srx?useUnicode=true&characterEncoding=utf-8 这样的配置。结果用select()方法查询结果如下:

character_set_client,latin1
character_set_connection,latin1
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-Linux-i686/share/mysql/charsets/

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/mysql/)

注意第一行就可以了,可见使用的是latin1。

而latin1本身就无法表示汉字,经过这个编码打包的SQL语句发给Server,Server也用Latin1解析也无法还原。

所以,我总是写乱码到DB。

而配置了配置characterEncoding=utf-8之后,
执行select(),结果:
character_set_client,utf8
character_set_connection,utf8
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-linux-i686/share/mysql/charsets/

第一行为utf-8,SQL将用UTF8打包给Server,Server也用Client配置的UTF8
解析。

展开更多 50%)
分享

猜你喜欢

Mysql5写中文乱码问题解决

MySQL mysql数据库
Mysql5写中文乱码问题解决

Mysql5 字符集编码问题解决

编程语言 网络编程
Mysql5 字符集编码问题解决

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MYSQL EMS的乱码问题解决

编程语言 网络编程
MYSQL EMS的乱码问题解决

ajax中文乱码问题解决方案

Web开发
ajax中文乱码问题解决方案

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JSP中文乱码问题解决方法小结

Web开发
JSP中文乱码问题解决方法小结

MySQL中文乱码问题的解决

编程语言 网络编程
MySQL中文乱码问题的解决

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Monitor Oracle Resource Consumption in UNIX

Monitor Oracle Resource Consumption in UNIX

Flash矢量绘画实例

Flash矢量绘画实例
下拉加载更多内容 ↓