网站主页   操作系统    网络工程    服务器    网页制作    数据库    程序开发    网络安全    办公软件   
  栏目导航
讲座日期: 本周六下午1点30分 抢座
讲座地点: 北大青鸟马甸校区
主讲老师: 王老师 金牌讲师
讲座主题: 网络安全
讲座内容: 检测、防御、黑客信息,如何过滤不安全的网站,如何防御黑客的进攻。
订座电话: 010-82011432/33
  您当前位置:主页 > 网络学院 > 数据库 > MYSQL >

北大青鸟华腾教育 教你解决mysql的乱码问题




  

 mysql数据库默认为latin即也就是iso-8859-1编码,当它无法获现在的编码时就使用默认的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解析。

 

好了,到这你就可以完美的解决mysql的乱码问题了,华腾教育祝您学习愉快。


上一篇:MySQL中基础命令简述  
下一篇:没有了
相关信息:


Copyright © 2002-2015 版权所有
学校地址:北京市海淀区西三旗建材城中路29号北大青鸟
招生热线:010-82011433/32 京公网安备110102004704  京ICP备05043413号 京公网安备110102004704