注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Search的博客

不断学习中!

 
 
 

日志

 
 

java web读取数据库中文乱码问题解决方案  

2012-12-26 23:23:58|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天在用java web读取数据库时,出现了中文乱码的问题。纠结了大半天,最终找到了一种解决方案
看网上很多说设置mysql默认字符集,以及在jsp中添加字符过滤器的,我试了但是没有解决,这里不再叙述。
解决方案中主要应用到了,java jdk string类提供了两种接口,String.getBytes(charset)和new String(bytes[],charset),第一种是
函数是将制定字符串按照charset进行解码,而后面的那个则是一个相反的过程,就是把解码后的字节数组以一种新的编码方式读取
重新读取,不要理解为是把这把原来的编码方式改变了,个人认为可以这样理解,后面一种方法是告诉编译器在进行输出时要按照charset的
编码方式进行读取。所以常常结合起来使用即 new string(s.getBytes(charset),new charset),先把原来的字符串解码然后以另一种字符集进行读取,后面的charset常用utf-8和gbk,来显示中文。
因此在解决jsp乱码问题就是把jsp编码设置为utf-8(页面可以正常显示中文),然后存取到数据库中,mysql数据库的字符集修改为可以显示中文的utf-8,在将中文数据存入数据时作如下操作。

String name=new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");

然后将转换后的name存储到数据库中即可。

而在进行读取的时候则并不需要做任何的转换,直接将其输出即可。

有一点需要说明的是,当我们用如上所述的方法来解决乱码问题可能会出现如下问题:

当我们通过控制台来查看数据库时,中文有可能会显示乱码,如下图所示


 

java web读取数据库中文乱码问题解决方案 - Search - Search的博客

 这时候我们只需要一条命令即可,在控制台输入set names gbk,设置数据库查询结果显示的字符形式为gbk即可。

具体效果如下图所示。

java web读取数据库中文乱码问题解决方案 - Search - Search的博客

 


另外,当我们在进行jsp的网页编程的时候同样会遇到各种的乱码问题,大致分为两种情况,第一种当我们想在servlet中显示中文的时候:直接使用String temp="测试编码",System.out.println(temp);的方法是会显示乱码的,这时候我们需要进行这样的转换,System.out.println(new String(temp.getBytes("utf-8"),"iso-8559-1");的方法即可,
第二种情况是我们如果想要在servlet中获取到jsp中所传递的中文参数时同样需要做如下操作;System.out.println(temp.getBytes("iso-8559-1"),"utf-8").
  评论这张
 
阅读(1781)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017