萍聚社区-德国热线-德国实用信息网

 找回密码
 注册

微信登录

微信扫一扫,快速登录

萍聚头条

查看: 1010|回复: 0

1-1-16-2-9 两种编码类型如何转换(GB2312<->8859_1)

[复制链接]
发表于 2003-5-11 22:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册 微信登录

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]
Die von den Nutzern eingestellten Information und Meinungen sind nicht eigene Informationen und Meinungen der DOLC GmbH.
您需要登录后才可以回帖 登录 | 注册 微信登录

本版积分规则

手机版|Archiver|AGB|Impressum|Datenschutzerklärung|萍聚社区-德国热线-德国实用信息网

GMT+1, 2025-2-7 13:36 , Processed in 0.440924 second(s), 20 queries , MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表