首页 > 解决方案 > 如何配置 EC2 以在我的 Spring Boot 应用程序中处理表情符号

问题描述

我目前正在尝试在EC2 实例上运行 Telegram 机器人。

但问题是 - 所有非英文符号都被替换了。在屏幕截图上,您可以看到表情符号是如何被替换的(例如,在“设置”字之前)或者俄语字是如何完全混乱的。

电报截图

到目前为止我已经尝试过:

  1. 使用参数运行 java:
java -Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US -jar
  1. 在 application.properties 中设置语言环境
spring.mandatory-file-encoding=UTF-8

spring.http.encoding.charset=UTF-8

spring.http.encoding.enabled=true
  1. 设置 /etc/environment 语言环境
JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"
LANG=en_US.utf-8
LC_ALL=en_US.utf-8

请注意:我的消息/按钮文本值存储在应用程序资源中适当的语言环境包中。并且考虑到该机器人仍然可以工作(即使消息混乱,他也会认识到他收到的消息的价值),我认为它与 java 应用程序有关。

PS当我在本地运行它时 - 它工作得很好。

任何帮助将不胜感激!

标签: javaspring-bootamazon-ec2localetelegram-bot

解决方案


经过大量的回答和尝试,这是我的解决方案:

由于我的文本值存储在 .properties 包中,Standard Java API is designed to use ISO 8859-1 encoding for properties files.

https://www.jetbrains.com/help/idea/properties-files.html#

所以在做'mvn clean package'之前,我手动解码了我的属性文件

native2ascii - 编码 UTF-8 src/main/resources/messages_en.properties src/main/resources/messages_en.properties

希望能帮助到你。

如果有人有更好的解决方案 - 请告诉我。


推荐阅读