请
登录
后使用快捷导航
没有帐号?
注册
登录
注册
快捷导航
首页
论坛
BBS
博客
技术栈
ITPUB学院
名人堂
版主团
搜索
高级搜索
热搜:
oracle
SAP
sap
二维码
dba
Oracle
c++
C++
CRM
银联信息中心
比特币
小额贷款
贷款
crm
ORACLE
项目管理系统
thread
android
python
java
本版
文章
帖子
用户
ITPUB论坛-专业的IT技术社区
»
论坛
›
≡ 开发技术 ≡
›
WEB程序开发
›
[jsp]常见问题集锦索引贴
1 ...
4
5
6
7
8
9
10
11
12
13
... 16
/ 16 页
下一页
返回列表
楼主:
omencathay
收藏
|
[jsp]常见问题集锦索引贴
[复制链接]
at_qiuyie
at_qiuyie
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
81
#
发表于 2006-5-7 22:18
|
只看该作者
通常来说,当请求递交到服务器端-->服务器端由servlet获得param-->执行相应的process(包括对数据库的操作)--->返回response显示给用户过程中 如果字符集不同会导致乱码问题。
当然熟悉了整个http request/response过程中经过了哪些字符集/字节转换会对理解乱码问题有一些帮助:
1. 客户端通过表单提交的请求(参数)。这里的参数编码规则是由定义在html或jsp页面头部directives决定的,如果没有特别指定则默认为iso-8859-1
2. 服务器端接受请求,在某servlet中(jsp归结到底也是servlet)获得请求参数并进行相应逻辑操作。最常用的是request.getParameter(); 方法。 如果不加任何指定,这一方法其实完成了如下的几个工作 a.从请求报文中拿到参数的byte[] b.按照默认编码规则解码(iso-8859-1)得到一个String字符串
3. 可能进行对数据库的操作,(增删改查),这里要注意同数据库的字符集统一,各数据库察看字符集的方法不同,一般都是通过查看数据字典获得
4.返回response给用户
那么为何有时候会出现乱码问题呢? 例如:从一个指定为gb2312编码的页面提交到服务器端,而服务器段直接调用request.getParameter()方法拿到字符串s,那么这个字符串直接返回到response一定会显示为乱码,因为原来的byte[]是gb2312的编码,用iso8859-1解码是一定会出错的。把字符串存入数据库和从数据库中取出字符串概念也是一样,如果数据库字符集是ascii那么rs.getString()拿到的字符串也是按ascii解码的,直接返回到response为gb2312的页面也会显示乱码.
解决方法通常有以下几种:
1. 统一所有的字符集编码,推荐(utf-8),可创建全局过滤器
在过滤器中过滤所有的request
request.setCharacterEncoding("UTF-8"
(需要与客户端浏览器的字符集编码统一)
chain.doFilter(request,response);
这里可以解决服务器段获取参数时编码冲突的问题,此时再调用request.getParameter()时就不会产生编码冲突
2. 结合使用new String(byte[] byte, String charset) 和byte[] String.getBytes(String charset)方法。但要注意前者是解码(从字节流得到字符串)后者是编码(将字符串重新编码为字节流)
举例来说,如果所拿到的字符串s是按iso-8859-1解码的,而想存入字符集为gb2312的数据库那么需要做如下转换String newS = new String(s.getBytes('ISO-8859-1"
,"gb2312"
以保证拿到gb2312码的字符串,这样就不会出现由于调用数据库操作而导致的字符集问题。
以上纯属个人经验总结,如有问题欢迎指出讨论
使用道具
举报
回复
显身卡
chinasyh
chinasyh
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
73
82
#
发表于 2006-5-8 16:41
|
只看该作者
rs怎么是待转换的字符串呢?是结果集吧。
使用道具
举报
回复
显身卡
hzskkkk
hzskkkk
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
83
#
发表于 2006-5-10 08:20
|
只看该作者
受教了
使用道具
举报
回复
显身卡
xingchen1986
xingchen1986
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
84
#
发表于 2006-5-20 17:42
|
只看该作者
我下载的孙卫琴的书为什么解压不了???
! Tomcat与Java.Web开发技术详解.pdf CRC 失败。文件被破坏
使用道具
举报
回复
显身卡
我能能
我能能
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
85
#
发表于 2006-6-10 18:19
|
只看该作者
顶
使用道具
举报
回复
显身卡
achilles12
achilles12
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
86
#
发表于 2006-6-12 09:19
|
只看该作者
ding
使用道具
举报
回复
显身卡
feng.yang
feng.yang
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
3
87
#
发表于 2006-6-15 10:33
|
只看该作者
好刀,楼主果然出手不凡!
使用道具
举报
回复
显身卡
风中之沙
风中之沙
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
20
88
#
发表于 2006-6-19 16:48
|
只看该作者
good
使用道具
举报
回复
显身卡
wangyoucao1015
wangyoucao1015
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
89
#
发表于 2006-6-28 09:27
|
只看该作者
顶!!
使用道具
举报
回复
显身卡
weide96
weide96
当前离线
积分
101
IP卡
狗仔卡
论坛徽章:
0
90
#
发表于 2006-7-2 09:21
|
只看该作者
辛苦了楼主
使用道具
举报
回复
显身卡
1 ...
4
5
6
7
8
9
10
11
12
13
... 16
/ 16 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
TOP
技术积分榜
社区积分榜
徽章
团队
统计
知识索引树
积分竞拍
文本模式
帮助
ITPUB首页
|
ITPUB论坛
|
数据库技术
|
企业信息化
|
开发技术
|
微软技术
|
软件工程与项目管理
|
IBM技术园地
|
行业纵向讨论
|
IT招聘
|
IT文档
ChinaUnix
|
ChinaUnix博客
|
ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有
联系我们
未成年人举报专区
京ICP备16024965号-8
北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
快速回复
返回顶部
返回列表