在 linux 服务器的外部 tomcat 服务器上部署 Spring Boot 时,英语以外的语言是错误格式

Language other than English is error format when deploying spring boot on an external tomcat server in linux server

提问人:Ptese 提问时间:6/14/2023 更新时间:6/14/2023 访问量:60

问:

我正在 linux 服务器中的外部 tomcat 服务器上部署我的 spring boot 项目。我的代码中有一些字符串文本可以通过多种语言向用户发送 OTP SMS,但是当我发送英语以外的语言时,我得到的格式与预期不同。 例:

  • 越南语错误:“OTP:518461 Hết hạn sau 60 giây。
  • 越南人期望:“OTP:518461 Hết hạn sau 60 giây。
  • 泰语错误:“OTP: 448762 ຠ໠າຠົດຓວລາ: 60 ວàº'ຠານ™—àºμ。
  • 泰语期望:“OTP:448762 ກໍານົດດວລາ:60ວິນາທີ。

但是当我在Spring Boot中通过内部tomcat运行它时,我没有收到该错误。

我尝试了很多解决方案,例如将配置UTF-8添加到外部tomcat服务器的配置中。在外部 tomcat 服务器上部署该错误时,如何修复该错误?

spring-boot tomcat 格式 utf-16

评论


答:

0赞 Soheil Babadi 6/14/2023 #1

您的 Tomcat 可能未配置为使用 UTF-8 编码,这会导致在以非英语语言发送 OTP 时出现问题。

我认为您可以尝试一些步骤来解决此问题:

  1. 将 Spring Boot 应用程序中的字符编码设置为 UTF-8
 spring.http.encoding.charset=UTF-8
 spring.http.encoding.enabled=true
 spring.http.encoding.force=true
  1. 在服务器配置文件中检查外部 Tomcat 服务器.xml字符编码

连接器 URIEncoding=“UTF-8”

  1. 将以下行添加到您的 catalina.sh 或 catalina.bat

导出 JAVA_OPTS=“$JAVA_OPTS -Dfile.encoding=UTF-8”

评论

0赞 Ptese 7/4/2023
对不起,因为我直到今天才回复你的答案。感谢您的回答,我尝试了包括您的解决方案在内的许多解决方案,但仍然出错。最后,经过漫长的一天,我找到了解决方案,那就是:将此配置 UTF-8 添加到我的 pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties>