免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1807 | 回复: 7
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-12-29 12:45 |只看该作者
要进行编码转换

论坛徽章:
0
3 [报告]
发表于 2005-12-29 14:51 |只看该作者

回复 2楼 唐钰小宝 的帖子

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

论坛徽章:
0
4 [报告]
发表于 2005-12-29 15:10 |只看该作者
<%

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

%>

论坛徽章:
0
5 [报告]
发表于 2005-12-29 16:08 |只看该作者

回复 4楼 zhangxy6005 的帖子

多谢老兄指点!

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

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

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

论坛徽章:
0
6 [报告]
发表于 2005-12-30 01:45 |只看该作者
tomcat默认的编码是en-US,以前看到一个方法是用一个servlet过滤器,你去搜索一下servlet filter GB2312,应该能找到解决方案。

论坛徽章:
0
7 [报告]
发表于 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();
%>

论坛徽章:
0
8 [报告]
发表于 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入手
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP