解码AppEngine中的国际字符

时间:2010-05-02 09:17:10

标签: java google-app-engine urldecode

我正在Google AppEngine中创建一个小项目,但我遇到国际字符问题。我的程序通过网址“page.html?data1& data2 ...”从用户处获取数据并将其存储以供稍后显示。

但是当用户使用åäö这样的国际字符时,它会被编码为%F4,%F5和%F6。我假设这是因为在http请求中只允许ASCII表中的前128个(?)字符。

有没有人有这方面的好解决方案?解码文本的任何简单方法?在存储数据之前解码它是否更好,或者在将数据显示给用户时应该对其进行解码。

2 个答案:

答案 0 :(得分:1)

网址可以包含任何内容,但应该是encoded。在Java中,您可以使用URLEncoderURLDecoder对所需字符编码的网址进行编码和解码。

请记住,这些类实际上是用于HTML表单编码,但它们可以应用于URL的查询字符串(参数),因此不要在整个URL上使用它们 - 仅在参数上使用它们。 / p>

答案 1 :(得分:0)

URI规范(RFC 3986)限制可在URI中使用的字符(请参阅ABNF)并定义用于传输“不安全”字符的百分比编码方案。作为Bozho says,网址的查询部分通常根据HTML规范(application/x-www-form-urlencoded)进行编码。

doc for App Engine说:

  

App Engine将Java Servlet标准用于Web应用程序。

因此,您应该让Servlet API为您解码参数。请参阅HttpServletRequest上的参数方法。这种编码通常应保留在视图层,因此数据将以未编码的形式存储。

如果您手动执行操作,请查看this blog post on character handling in URIs

相关问题