编码的问题?

03-11-29 lhc_mail
在tomcat4下:

在地址栏直接输入中文后,在服务器jsp页面中

request.setCharacterEncoding("GBK");

而在form中输入的中文,则需要

request.setCharacterEncoding("utf-8");

才能正确读出,

而在2000上就正常,98才会遇到这种问题

smart
2003-11-29 11:35
我也碰到了这样的问题,不知道怎么解决,先顶一下!

在表单中提交中文可以被程序处理和识别,但是同样的程序下,将表单请求所对应的参数直接输入到地址栏中请求时,程序不能正确识别请求中的参数值。例如“1.jsp?name=中国”,对应的程序是使用表单,都使用同样的getParameter("name")方法。这两者为什么会有这样的差别?

iceant
2003-11-29 15:33
只能告诉你这个问题很麻烦~~

我曾经查阅过 SUN 的 J2EE 文档(与 Internation 相关的文档,你也可以到 SUN 的网站去看看),里面有说到用 setCharacterEncoding 不能解决问题。

因为你没法知道用户在客户端实际是以什么样的编码传来了数据,这样,

无论你在服务器端怎么设置这个 CharacterEncoding, 都有可能出现与客户端提交的数据编码不一至的情况。

我试过有一种办法,就是在 jsp 里设置页面使用 UTF-8 编码的数据,然后,在服务器端设置 setCharacterEncoding("UTF-8") 这样可以正确取得数据,但是这样会带来开发上的一些麻烦,因为你的文件也必须转换为 UTF-8 格式的,而且如果你写一个webmail 的小程序,会发现 Outlook 要调到 UTF-8 的字体才能正确读出(当然你可以自己做一个转换)

尽管 SUN 的 Java 设计思想是好的,使用 Unicode 做为 JVM 中 character 的存贮编码,但这也不可避免的带来了字符串转换的成本。

lhc_mail
2003-12-01 10:44
多谢,我又做了测试,发现在form中的编码方式与<@page>中指定的编码是一致的,可以在服务器端按一样的编码解释,但98下地址栏还是不正常,规律如下:简体下要以gbk来解码。

猜你喜欢