gpt4 book ai didi

java - UTF-8 字符编码不适用于 AWS Elasticbeanstalk Tomcat8 服务器的 spring 应用程序

转载 作者:行者123 更新时间:2023-11-28 23:11:39 24 4
gpt4 key购买 nike

将服务器移至 AWS Elasticbeanstalk Tomcat 8 后,UTF-8 字符编码不适用于我基于 spring 的应用程序。

我已引用此 link 中的步骤.

下面的东西,我试过了:

  • 设置URIEncoding="UTF-8"在你的 <Connector>server.xml .引用资料:HTTP 连接器、AJP 连接器。
  • 使用 - <meta charset="UTF-8" /> 更改所有页面以包含字符集名称.
  • 用过CharsetEncodingFilterweb.xml .
  • tomcat 的 JVM 选项 -Dfile.encoding=UTF8-Djavax.servlet.request.encoding=UTF8

对于 AWS Elastibeanstalk tomcat JVM 参数,

{
"Namespace": "aws:elasticbeanstalk:container:tomcat:jvmoptions",
"OptionName": "JVM Options",
"Value": "-Dfile.encoding=UTF8 -Djavax.servlet.request.encoding=UTF-8"
}

web.xml (这个filter配置没变,老服务器也是一样。)

<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

.ebextensions/server.xml

<Server port="8005" shutdown="SHUTDOWN">
...
<Service name="Catalina">
...
<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"
redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3"
URIEncoding="UTF-8"
redirectPort="8443" />
...
</Service>
...
</Server>

.ebextensions/httpd.conf

AddDefaultCharset utf-8

理想情况下,它应该适用于这些可能的更改,但我收到了俄语、保加利亚语等语言的特殊字符的垃圾字符。

作为目前的解决方法,我在应用程序中需要的任何地方使用以下代码段:

public String convertToUTF(String value) {
return StringUtils.isEmpty(value) ? value
: new String(value.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
}

请建议我在这里缺少任何配置的地方。提前致谢。

注意:迁移到 AWS Elastibeanstalk Tomcat8 Linux 服务器后会出现字符编码问题。

最佳答案

你好,在 Controller 类中这样做。

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

public @ResponseBody DeclareExamMessage addComplaint(HttpServletRequest request) {
try {

request.setCharacterEncoding("UTF-8");
//map the request object and pass it to sava method
}

}

应用上述更改后如果它不起作用更改数据库 uft8 字符集为 utf8mb4

并引用以下网址

Trouble with UTF-8 characters; what I see is not what I stored

https://medium.com/@adamhooper/in-mysql-never-use-utf8-use-utf8mb4-11761243e434

关于java - UTF-8 字符编码不适用于 AWS Elasticbeanstalk Tomcat8 服务器的 spring 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com