2009-09-14 80 views
2

我非常需要帮助。Servlet request.getParameters非英文字符帮助!

我有一个Java Servlet,它可以通过HTTP Get URL访问,其中包含八个参数。 问题是这些参数不是英文专有的。 任何其他语言都可以在这些参数中,例如希伯来语。

现在,当我从应该发送Get请求的类或简单地从浏览器的地址栏发送数据时,我在调试(Netbeans)中看到的查询具有乱码字符和参数本身,发布request.getParameter是????问号。

如何或在哪里可以解决这个问题?

+0

使用** POST **表单方法。 – adatapost 2009-09-14 14:51:40

+1

顺便说一句,不要使用POST的东西,应该在语义上,是一个GET请求。除了其他问题,它还会打破书签和后退按钮。 – erickson 2009-09-14 15:25:25

回答

0

您的servlet引擎中应该有一个设置来控制用于URL参数的字符编码。为了支持每一种语言,UTF-8编码是一个很好的选择—,但这不是许多服务器的默认编码。

Tomcat使用ISO-8859-1作为URL参数的默认字符解码器,而不考虑包含URL的页面的编码。这可以通过"URIEncoding" attribute in its Connector配置进行更改。其他应用程序服务器可能有类似的设置

如果服务器需要UTF-8编码参数,那么发送它们的页面也应该使用UTF-8进行编码。

This article涵盖了使用JSP时经常遇到的许多问题。

0

我怀疑你的服务器是UTF-8模式,但你的URL编码为Latin-1。你得到了什么样的问号,“?”或“ ”?这将阐明谁正在进行转换。

您需要通过添加URIEncoding =“ISO-8859-1”属性将连接器更改为Latin-1,或者可以使用UTF-8重新编码URL。

如果网址是由浏览器编码的,那么就会出现问题。没有解决方案,因为根据浏览器的不同,这种解决方案可能会有所不同。看我的问题,

Handling Character Encoding in URI on Tomcat