2011-03-26 124 views
9

您好 我使用谷歌应用程序引擎的一个项目,我做什么,我需要存储一些字符串。我使用Java和JDOHelper.getPersistenceManagerFactory("transactions-optional")谷歌App Engine数据存储串编码的问题

在调试它在我的电脑一切正常,而弦乐被正确地保存。但是,当我将其上传到谷歌应用程序引擎时,我保存的所有字符串都将其统一码字符替换为问号(?)。如果我转到项目页面上的DataViewer,我可以看到字符串实际上是用问号保存的。

就像我说的,我的电脑上运行时,它工作正常。有谁知道我应该做什么?

+0

你说的是使用“编码”字符串或“未编码”字符串 – 2011-03-27 04:53:55

+0

什么字符编码你有没有在你的网页中指定? UTF-8对我来说工作正常。 – Eelke 2011-03-27 07:00:03

+0

我真的不知道。我对GAE和编码材料相当陌生。但是我做了一个测试,试图用字符串“å”直接从我的servlet写入持久性管理器,并且运行良好。所以我想这与解码通过POST进入的字符串有关。但正如我所说,调试本地 – Joel 2011-03-27 07:33:00

回答

3

这听起来像你没有指定你的HTTP POST内容的编码。有关详细信息,请参阅this question

1

像兔崽子说,你应该指定字符集。我仍然在Google App Engine上遇到了一些麻烦。在将charset设置为UTF-8并使用Spring的CharacterEncodingFilter之后,没有任何东西让我困扰编码。

How To Get Character Encoding Correct,其中包括有关该代码添加到您的web.xml文件:

<filter> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    <init-param> 
     <param-name>forceEncoding</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>SetCharacterEncoding</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

一定要添加为你的过滤器链的第一步!

此外,博客的作者建议在JSP页面中的字符集设置为UTF-8,以及:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
相关问题