我正在使用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德国变形金刚但是有些中文单词?
答案 0 :(得分:1)
我怀疑你的页面或servlet编码是UTF-8。 Latin-1编码的Umlaut是一个无效的UTF-8序列,所以你得到NULL。
当您输入中文时,浏览器知道它无法在Latin-1中对此进行编码,因此它会自动更改为UTF-8。这就是中国人工作的原因。
如果您可以发布一些HTTP跟踪,我们可以确认这一点。
答案 1 :(得分:1)
使用ISO-8859-1的中文不会工作,但德国应该。如果chineese无论如何编码,也许你的表格是用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" %>