我正在用JSP脚本编写一些网站,我遇到了一个关于urlencoded web公式参数的奇怪问题。该站点本身采用iso-8859-1编码。
我有一个简单的webform,其中有一个名为description的字段。
如果我输入德语Umlauts或特殊字符,如"ü“或”«“,这些字符将自动urlencoded。但是如果我想读取这个参数,我总是得到null。
String description = request.getParameter("description");如果我输入一些中文单词,比如專業人士,它们也是are编码的。但是,我可以在不检索null的情况下读取它们。
无论我使用"post“还是"get”作为方法,这个行为都不会改变。我试着用下面的文本来“拉皮条”我的网页表单--但是也没有用。
accept-charset="ISO-8859-1" enctype="application/x-www-form-urlencoded"我的问题是:为什么我不能检索urlencoded德语Umlauts,而是一些中文单词?
发布于 2009-09-03 10:22:44
使用ISO-8859-1的中文不起作用,但德语应该起作用。如果中文是编码的,也许你的表单是用UTF-8编码的?你用的是哪种浏览器?JSP的封装是什么?你应该始终使用UFT-8,而不是拉丁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-03 10:17:03
我怀疑您的页面或servlet编码是UTF-8。拉丁文-1编码的Umlaut是一个无效的UTF-8序列,因此得到的结果为NULL。
当你输入中文时,浏览器知道它不能用拉丁文-1编码,所以它会自动转换为UTF-8。这就是为什么中文行得通。
如果您可以发布一些HTTP跟踪,我们可以确认这一点。
https://stackoverflow.com/questions/1372468
复制相似问题