网站地图 | 联系我们 | 咨询热线:0991-4811639
您现在的位置: 新疆二域设计网络公司 >> 网页设计学院 >> 数据库 >> Mysql数据库 >> 正文
我插入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使用什么编码呢?

在客户端写个程序,执行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/

注意第一行就可以了,可见使用的是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
解析。

作者:佚名 | 文章来源:新疆二域设计 | 更新时间:2007/6/14 10:12:12

  • 上一篇文章:

  • 下一篇文章:
  • 相关文章:
    编码utf-8乱码问题集锦
    MySQL中修改密码及访问限制设置的六种方法
    文字在CD中变为变为乱码或方块

    色彩理念
    网页制作
    美工图形
    网络编程
    数 据 库
    网站运营
    ::最近更新::
    ·快速掌握Ora-00600 4194错…
    ·mysql调用存储引擎讲解
    ·MyISAM表的静态格式存储
    ·mysql 4.1的FOUND_ROWS()函…
    ·从授权方式和成熟性等来探…
    ·MySQL双向加密和单项加密函…
    ·将MySQL服务添加到Windows…
    ·MySQL怎样优化WHERE子句
    ·MySQL的数据类型和建库策略
    ·MySQL数据库函数详解2
    ·MySQL数据库函数1
    ·MySQL服务器的启动和关闭
    ·Linux下建立Mysql镜像数据…
    ·MYSQL失败出错代码列表
    ·Mysql日期和时间函数
    ::推荐阅读::
    ·MySQL数据导入与导出
    ·MySQL的安装与使用
    ·如何恢复MYSQL的ROOT口令
    ·如何把ACCESS的数据导入到…
    ·快速修复mysql数据库
    ·MYSQL如何存取二进制文件
    ·从一个MysqL的例子来学习查…

    关于我们 | 网站建设 | 服务帮助 | 联系我们 | 网页设计学院 | 实用工具 | 友情链接 | 新疆专题
    版权所有 © 2007 新疆二域设计网络公司 www.xjcncn.com All Rights Reserved
    网站建设总机:0991-4811639、6587518 传真:0991-4842803 ;咨询热线:13999201770. E-mail:xjcncn@gmail.com
    MSN :xjcncn@hotmail.com ; QQ:359312 ;地址:新疆乌鲁木齐市北京路华联大厦A座5楼 邮编:830000