【问题标题】:Java Spring UTF-8 fails in Different EnvironmentsJava Spring UTF-8 在不同的环境中失败
【发布时间】:2015-01-20 00:10:25
【问题描述】:

我有一个执行 Ajax 调用的应用程序,其中一个字符串被传递给服务器,服务器返回一个包含相同字符串的 json 字符串,以及其他信息。我将此应用程序托管在 Amazon Web Services (AWS) 和本地开发环境中的服务器上。

当我在 AWS 环境中通过此调用特殊字符(á、ñ 等)时,它们在 json 中返回为带有问号的菱形。奥秘在于这些字符在我的本地开发环境中被正确编码。

我有这个标签来编码 HTML 模板:

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

我还得到了服务器注释:

@RequestMapping(value="/actualizarDestinos", produces = "application/json; charset=utf-8", method = RequestMethod.GET)

在 web.xml 中的 tomcat 配置中,我取消了这个过滤器 setCharacterEncodingFilter 的注释。

知道为什么编码在 AWS 环境中失败但在我的本地环境中有效吗?跟操作系统的语言有关系吗?

【问题讨论】:

  • 尝试在 web.xml 上添加过滤器 encodingFilter 并在 Tomcat Java 选项上添加 -Dfile.encoding=UTF8。仍然没有运气。想知道我是否与操作系统语言有关,或者它在 Windows Server 2012 r2 中的错误。

标签: java json spring amazon-web-services utf-8


【解决方案1】:

在我的例子中,tomcat,在 server.xml 文件的标签中指定 URIEncoding=utf8 属性

&lt;Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf8" /&gt;

并将LANG系统环境设置为UTF8(如en_US.UTF-8)并重启WAS再试一次。

【讨论】:

  • 我尝试了 URIEncoding="utf8" 和 "UTF-8" 都没有成功。该实例安装了 Windows Server 2012 R2,有什么方法可以在那里更改它?
  • @MiguelAngelMerinoVega 尝试将 encodingFilter 添加到您的网络应用项目的 web.xml 中。不是tomcat配置目录。 ` encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding-name> UTF-8encodingFilter你的服务名称`
  • 试了一下,上传了一个新版本。还是没有运气。
  • 会是语言吗?这里我的 SO 是西班牙语,应用程序运行良好。在另一个地方——它失​​败了——是英文的。
  • @MiguelAngelMerinoVega 那么,可能是语言设置是问题 XD。我没有使用 windows server 的经验。对不起。 ;;
【解决方案2】:

几个月后,由于这个答案,我可以解决问题

https://stackoverflow.com/a/138950/1566419

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多