蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年6月6日 10:18


[编码] 中文保存乱码问题,那位大虾帮帮忙看看,谢谢!

俺使用的是jakarta-tomcat-5.0.27,系统是turbo linux,在web页面上进行文件上传操作,文件名称和文件标签都包含中文,在文件上传操作过程中,包含的中文都能正常显示。但是上传成功保存到数据库时,在数据库(sybase数据库)中查询出来的文件名称和文件标签中包含的中文显示乱码,在web页面中也显示为乱码。出问题之前上传的文件中文件名称和文件标签中包含的中文,从数据库中查询结果显示正常,但是在web页面显示却为乱码。
[color=Red]反正是出问题后,只要是从数据库中查询出来的中文在web页面显示都乱码,而jsp文件中的中文显示正常。[/color]

是不是在tomcat和数据库之间进行的文字编码转换有问题?
还是其他方面的问题?怎么解决?


要进行编码转换

回复 2楼 唐钰小宝 的帖子

在tomcat的那个配置文件中可以配置默认的字符集?

<%

   request.setCharacterEncoding("GB2312"); //设置输入编码格式
  response.setContentType("text/html;charset=GB2312"); //设置输出编码格式

%>

回复 4楼 zhangxy6005 的帖子

多谢老兄指点!

俺碰到的问题是这样的,以前的web页面好好的,没有出现乱码问题。修改了一个web应用中的一个配置文件和更换一个jsp文件后,tomcat平台下的所有web应用中从数据库查询出来的中文都显示为乱码,而不光是修改配置和更换文件的web应用显示乱码。后来把配置文件和jsp还原到以前的版本,整个tomcat下的所有web应用中的web页面乱码问题还是没有解决。

所以怀疑是tomcat中的配置文件有问题,或者是turbolinux中的环境变量设置问题。

tomcat中设置默认语言的配置文件是那个?turbolinux中的环境变量配置文件是哪个?

tomcat默认的编码是en-US,以前看到一个方法是用一个servlet过滤器,你去搜索一下servlet filter GB2312,应该能找到解决方案。

在处理数据之前加上二行代码

例如:

<%

   request.setCharacterEncoding("GB2312"); //设置输入编码格式
  response.setContentType("text/html;charset=GB2312"); //设置输出编码格式


//获取数据
        int kdpayitemid = Integer.parseInt(request.getParameter("kdpayitemid"));
        int money = Integer.parseInt(request.getParameter("money"));
        String addtime = request.getParameter("addtime");
        String message = request.getParameter("message");
        int id = Integer.parseInt(request.getParameter("id"));


//修改数据        
     KdpayControl kdpaycontrol= new KdpayControl();
        kdpaycontrol.setId(id);
        kdpaycontrol.setKdpayitemid(kdpayitemid);
        kdpaycontrol.setMoney(money);
        kdpaycontrol.setAddtime(addtime);
        kdpaycontrol.setMessage(message);
        kdpaycontrol.editkdpay();
%>

数据库中查询出来的中文在web页面显示都乱码

应该从resultset取出来的数据入手,大家怎么都在讨论request/response?

思路不对~~

第一,检查数据库里面是不是中文。
是---〉把取出的中文进行转换,处理方法:这个和数据库时建库/建表的设置有关。你用utf-8建库和gbk建库,检索出来的数据也会不一样。
       写一个转换函数处理一下就可以。大体这么个函数toChinaese(resultset.getString("COLNAME"));函数里面无非i
[code]
      byte[] bytesStr = str.getBytes("ISO-8859-1");
      return new String(bytesStr, "gb2312");
[/code]
否---〉中文没有提交进去,从request入手



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com