如何将URL中的UTF8字符串传递给JSP页面

时间:2013-12-29 17:15:19

标签: jsp utf-8

我有一个带项目的简单仪表板,每个项目可以有多个标签。现在我正在实现过滤功能,当用户点击标签时,将显示带有该标签的所有项目。

在服务器端,我使用JSTL <c:url /><c:param />呈现网页,所以在源代码中它看起来像这样:

<a href="/dashboard?filter=k%c5%af%c5%88">kůň</a>

问题是,当我点击链接时,我的浏览器实际上解码了字符串并将其发送到服务器:/dashboard?filter=kůň

事实上,这不是有效的URL,因此在通过网络的方式上它会受到损害,服务器实际收到/dashboard?filter=kůÅ

我的网页和服务器上的所有内容都设置为使用UTF-8。使用POST并从表单发送UTF-8数据时,不会发生此问题。

有没有办法阻止浏览器解码字符串?

我尝试过Firefox和Chrome,但我认为它没有任何意义。

更新:澄清我想在我的服务器上接收百分比编码的字符串,所以我可以安全地解码它。

UPDATE2:我对这些字母进行了一些研究,问题是。 LATIN SMALL LETTER U WITH RING ABOVE(......)被编码为两个字节 - 0xC5 0xAF。 Java将每个字节视为单个字符。所以0xC5变为LATIN CAPITAL LETTER A WITH RING ABOVE - Å。等等。

1 个答案:

答案 0 :(得分:0)

编辑:我在这个问题中找到了解决方案:HttpServletRequest UTF-8 Encoding

到目前为止,我用来解决这个程序的最好方法是从QueryString中丢弃全文。我可以用数据库中的相应ID替换标记字符串,这反过来将解决编码问题。