|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
发信人: maquan ('ma:kju), 信区: Java
标 题: Re: 两种编码类型如何转换(GB2312<->8859_1)
发信站: BBS 水木清华站 (Mon May 20 09:27:58 2002)
【 在 t20sc (学Java,可是从来不考认证) 的大作中提到: 】
: 标 题: Re: 两种编码类型如何转换(GB2312<->8859_1)
: 这个问题我也发现了,所以我用了比较土的方法来解决
: 【 在 maquan ('ma:kju) 的大作中提到: 】
: : 是啊,这就是我说的那个可能的后遗症 :(
: : 用转换的方法可以解决问题。
: : 可是,总觉得这样“凑合”不是彻底的办法。事实上,如果你的程序原封不动地
: : 拿到另一个 Server 上去,很有可能从 request 得到的字符串就又是 gb2312 的
: : 了,那时候怎么办?难道把程序再改回来?
: : 所以,我想可能需要想个办法,怎么才能控制从 request 得到的字符串的编码方式。
: : 只是我现在还没找到方法。
简单研究了一下,发现了一些迹象,但还不能确定是否已经解决了。
我用的是 weblogic 6.0,在部署一个 application 时,可以指定 inputCharset,
方法是在 web.xml 中定义一个 InitParameter,名字是
“weblogic.httpd.inputCharset./”,值就是“gb2312”之类的了。
weblogic 中实现的 HttpServletRequest 是按照下面的逻辑来确定以何种 encoding
来解析一个 request 的:
1. 首先看 HTTP Header 中是否有 content-type 的指定,如果有则用之。
2. 否则,从 web.xml 中以 InitParameter 的方式读出 inputCharset 的映射,
甚至可以给特定的 URL 设定专门的 encoding。
3. 如果没有读到 inputCharset 的映射,则用系统默认的 encoding 创建
InputStream,并进而创建 Reader 来解析 request.
方法是有了,但只使用于 weblogic,看来不同的 Application Server 的处理
方式可能是不同的。但也许原则上应该都有这方面的设置吧……
--
□□□□□□□□□□□□□
□ □
□ 忍以明志 勤以致远 □
□ □
□□□□□□□□□□□□□
※ 来源:·BBS 水木清华站 bbs.edu.cn·[FROM: 202.108.205.98] |
|