Chinaunix

标题: [编码] 中文保存乱码问题,那位大虾帮帮忙看看,谢谢! [打印本页]

作者: tianping188    时间: 2005-12-29 11:48
标题: [编码] 中文保存乱码问题,那位大虾帮帮忙看看,谢谢!
俺使用的是jakarta-tomcat-5.0.27,系统是turbo linux,在web页面上进行文件上传操作,文件名称和文件标签都包含中文,在文件上传操作过程中,包含的中文都能正常显示。但是上传成功保存到数据库时,在数据库(sybase数据库)中查询出来的文件名称和文件标签中包含的中文显示乱码,在web页面中也显示为乱码。出问题之前上传的文件中文件名称和文件标签中包含的中文,从数据库中查询结果显示正常,但是在web页面显示却为乱码。
反正是出问题后,只要是从数据库中查询出来的中文在web页面显示都乱码,而jsp文件中的中文显示正常。

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

[ 本帖最后由 HonestQiao 于 2005-12-29 12:02 编辑 ]
作者: 唐钰小宝    时间: 2005-12-29 12:45
要进行编码转换
作者: tianping188    时间: 2005-12-29 14:51
标题: 回复 2楼 唐钰小宝 的帖子
在tomcat的那个配置文件中可以配置默认的字符集?
作者: zhangxy6005    时间: 2005-12-29 15:10
<%

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

%>
作者: tianping188    时间: 2005-12-29 16:08
标题: 回复 4楼 zhangxy6005 的帖子
多谢老兄指点!

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

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

tomcat中设置默认语言的配置文件是那个?turbolinux中的环境变量配置文件是哪个?
作者: perryhg    时间: 2005-12-30 01:45
tomcat默认的编码是en-US,以前看到一个方法是用一个servlet过滤器,你去搜索一下servlet filter GB2312,应该能找到解决方案。
作者: zhangxy6005    时间: 2005-12-30 10:46
在处理数据之前加上二行代码

例如:

<%

   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();
%>
作者: knight-yl    时间: 2005-12-30 15:47
数据库中查询出来的中文在web页面显示都乱码

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

思路不对~~

第一,检查数据库里面是不是中文。
是---〉把取出的中文进行转换,处理方法:这个和数据库时建库/建表的设置有关。你用utf-8建库和gbk建库,检索出来的数据也会不一样。
       写一个转换函数处理一下就可以。大体这么个函数toChinaese(resultset.getString("COLNAME"));函数里面无非i

  1.       byte[] bytesStr = str.getBytes("ISO-8859-1");
  2.       return new String(bytesStr, "gb2312");
复制代码

否---〉中文没有提交进去,从request入手




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2