Google App Engine 上的瑞典语字符编码错误

Posted

技术标签:

【中文标题】Google App Engine 上的瑞典语字符编码错误【英文标题】:Swedish characters encoded wrong on Google App Engine 【发布时间】:2011-11-05 11:48:46 【问题描述】:

一个非常基本的问题,我很尴尬,我自己还没有弄清楚。

当我在托管在 Google App Engine 上的 Spring Web 应用程序中处理发布在我的 html 表单上的字符串时,我应该怎么做才能保持正确的编码?

先决条件:我有一个尝试过以下编码的页面:

meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"

meta http-equiv="Content-Type" content="text/html; charset=UTF-8"

当有人在页面上发布带有例如瑞典字符 åäö 的表单时,当我查看发布的字符串(在调试器中或部署服务器上的持久字符串中)时,我的 servlet 代码中会出现问号。 (这似乎是一个转义序列,因为我的瑞典字母后面的字母也被删除了。

我应该更改页面上的编码还是以某种方式更改 GAE servlet 的编码?

【问题讨论】:

和西班牙语一样 ñ,你在使用@ResponseBody btw 吗? 不,如果我没记错的话,那个应用程序没有使用 Spring MVC。 【参考方案1】:

我正在使用 servlet 过滤器,它强制编码为 UTF-8:

<filter>
    <filter-name>Set Character Encoding</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>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我不确定它是否需要,它只是来自我的 GAE 项目(以及任何其他基于 Spring 的项目)的模板,我的意思是没有这个过滤器我没有尝试过。但是有了它,它工作正常,完全没有编码问题。

当然,我总是在页面上使用 UTF-8

【讨论】:

您的过滤器仅使用 UTF-8 修复了它。非常感谢! 我也为此写了一篇博文,macgyverdev.blogspot.com/2011/09/…

以上是关于Google App Engine 上的瑞典语字符编码错误的主要内容,如果未能解决你的问题,请参考以下文章

Google-App-Engine 上的 Grails - 它死了吗? [关闭]

Google App Engine 上的 Production App 突然无法访问 Google Cloud Storage

Google Apps 域上的 Google App Engine

Google App Engine 上的 web.py

部署失败:Google App Engine 上的 Kotlin Spring Boot 应用

Google App Engine 上的 Django TemplateDoesNotExist