1

我正在使用 JSP-Scripting 对一些网站进行编程,但遇到了 urlencoded web-formular 参数的一个奇怪问题。该站点本身以 iso-8859-1 编码。

我有一个简单的网络表单,其中包含一个名为description.

如果我输入德语变音符号或特殊字符,如“ü”或“ß”,这些会自动进行 urlencoded。但是如果我想读取这个参数,我总是会得到null.

String description = request.getParameter("description");

如果我输入一些中文单词,例如專業人士,它们也是 urlencoded。但是,我可以在不检索的情况下阅读它们null

无论我使用“post”还是“get”作为方法,这种行为都不会改变。我试图用下面的文字“拉皮条”我的网络表单——但这也无济于事。

accept-charset="ISO-8859-1" enctype="application/x-www-form-urlencoded"

我的问题是:为什么我不能检索 urlencoded 德语元音变音但一些中文单词?

4

2 回答 2

1

我怀疑您的页面或 servlet 编码是 UTF-8。Latin-1 编码的元音变音是无效的 UTF-8 序列,因此您得到 NULL。

当你输入中文时,浏览器知道它不能用 Latin-1 编码,所以它会自动变成 UTF-8。这就是中文工作的原因。

如果您可以发布一些 HTTP 跟踪,我们可以确认这一点。

于 2009-09-03T10:17:03.407 回答
1

带有 ISO-8859-1 的中文不起作用,但德语应该。如果无论如何都对中文进行编码,那么您的表单可能是用 UTF-8 编码的?所以你使用哪个浏览器?JSP的编码是什么?您应该始终使用 UFT-8,而不是 Latin 1。如今,每个浏览器和服务器都应该在每个操作系统上支持 UTF-8。

我的经验是,GET 通常不适用于编码,但 POST 应该可以。表单参数 accept-charset 和 enctype 是正确的。你用什么服务器?

JSP 内容类型通常通过以下方式设置:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
                         pageEncoding="ISO-8859-1" %>
于 2009-09-03T10:22:44.267 回答