对于Mysql而言,默认编码是ISO8859-1,显示乱码

 记得以前也研究过这问题,现在只是重新来看下这问题.其实mysql的中文显示问题最根本的原因就是各个软件或环境对数据编码的不同,而造成在有些地方出现乱码.

   如下(这是我以前碰到的问题):
 
对于Mysql而言,默认编码是ISO8859-1,而jsp的request的默认编码也是ISO8859-1,所以如果要把请求参数插入数据库,形式可以如下:
String sql="insert into test (colum) values ('"+request.getParameter("name")+"')";

在struts中,从模型里面接受过来的参数编码默认的也是ISO8859-1,在写入数据库时,不需要将显示的中文转换为ISO8859-1.

string str=new String(str.getBytes("gb2312"),"ISO8859-1");

即将编码为gb2312的字符转化为ISO8859-1的字符

str=new String(str.getBytes("ISO8859-1"),"gb2312");
即将编码为ISO8859-1的字符转化为gb2312的字符

在从数据库中读数据时得到是ISO8895-1编码的字符。如果需要显示中文,还要将其转化为gb2312编码的字符。例如:
ResultSet st;
XM = new String(st.getString("XM").getBytes("ISO8859-1"),"gb2312");字符XM就转化为gb2312了,可以在页面上正常的显示为中文了

注意:在对字符进行转换时一定要仔细检查每个页面,都要做如下设置(如果没有可能会出现乱码)
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

在做文件上传时。
在视图页面还是要做上面的处理,及在视图顶端设置如<%@ page language="java" contentType="text/html;charset=gb2312"%>,这样,文件在上传到服务器时,会正确显示中文,不至于出现乱码。在控制器,写入文件,及输出流时还要保持文件名的原始编码。例如:

fname=file.getFileName();
StreakmOut=new FileOutputStream(dir+"/"+fname);


   从上面我们可以清楚的知道,各个不同的地方默认编码的情况,根据需要我们完全可以更改这些默认编码,达到我们需要的目的.

   不过,DBACentral for MySQL 图形化软件的编码无法改变,至少我是找不到地方改,今天花了一下午的时间研究这软件,几乎把它翻了个底朝天,就是找不到,都怀疑它是不是把编码指定了,接着就在摆渡了一下,没有太多关于这软件的操作说明,我事先也查过它的帮助问档,输入character只找到4条结果,都没用,输入character set搜索,没有结果.晕死了,帮助文档那么大,还有像蚂蚁那么多的英文字母在那爬着,我头都看大了,就是找不到一条关于设置字符集的单词,我英文水平还不至于会把这几个简单的单词看漏.最后摆渡了三四下,终于在web上找到一丝信息.地址连接如下:http://x.discuz.net/365518/viewspace_26568.html

没必要打开,高手就在里面说了一句话:DBACentral for MySQL 的介面比 Navicat 更像 M$ Access。一開始的連線畫面只能選一個資料庫來管理。不過因為 DBACentral for MySQL 完全無法更改編碼,所以其它的介面也看看就好

    如何在mysql数据库中显示中文的问题.很多人想在这里看到中文结果,虽然这并不影响你的数据在前台显示.

    其实只需要改变一下mysql的默认编码即可.同时还要注意,每张表还有一个默认编码也要一同改.

    现在就摘录一为csdn上一位朋友的文章:

 

问:如何操作才能让mysql在stucts结构中正确存储和显示中文

答:执行  
mysql>show   variables   like   "%char%";  
mysql>show   variables   like   "%colla%";  

能看到你的mysql字符集设置,如果有不是gbk,可以用下面的命令改变它:  
mysql>SET   character_set_client   =   gbk  
mysql>SET   character_set_connection   =   gbk  
mysql>SET   character_set_database   =   gbk  
mysql>SET   character_set_results   =   gbk  
mysql>SET   character_set_server   =   gbk  
mysql>SET   collation_connection   =   gbk_bin  
mysql>SET   collation_database   =   gbk_bin  
mysql>SET   collation_server   =   gbk_bin  
另外,对你原来有中文的表执行下面语句:  
ALTER   TABLE   表名   CONVERT   TO   CHARACTER   SET   gbk;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值