java - 如何配置 EC2 以在我的 Spring Boot 应用程序中处理表情符号
问题描述
我目前正在尝试在EC2 实例上运行 Telegram 机器人。
但问题是 - 所有非英文符号都被替换了。在屏幕截图上,您可以看到表情符号是如何被替换的(例如,在“设置”字之前)或者俄语字是如何完全混乱的。
到目前为止我已经尝试过:
- 使用参数运行 java:
java -Dfile.encoding=UTF-8 -Duser.language=en -Duser.country=US -jar
- 在 application.properties 中设置语言环境
spring.mandatory-file-encoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true
- 设置 /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当我在本地运行它时 - 它工作得很好。
任何帮助将不胜感激!
解决方案
经过大量的回答和尝试,这是我的解决方案:
由于我的文本值存储在 .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
希望能帮助到你。
如果有人有更好的解决方案 - 请告诉我。
推荐阅读
- asp.net-core - NuGet.targets 错误:'.',十六进制值 0x00,升级到 .Net Core 2.1.1 后是无效字符
- javascript - 在我的数组显示中删除 NaN
- google-drive-api - 谷歌驱动器中的文件夹为空,已删除的文件未显示在垃圾箱中
- android - 为什么 ConstraintLayout 1.1.0 layout_constraintWidth_percent 和 layout_constraintDimensionRatio 不能一起工作?
- python - 如何将彩色颗粒图像转换为黑白 (0,1) 以使晶界保持可识别
- c# - 使用 AutoMapper 将 id 列表转换为 Object
- javascript - 用户脚本跨域请求失败
- oauth-2.0 - 使用 Auth0 的身份验证过程将用户从我们的应用程序转移到另一个位置
- c# - 如何从 TranslateZoomRotateBehavior 禁用旋转手势
- amazon-web-services - AWS CodeDeploy 应用程序安装步骤不起作用 (CodeDeployPlugin::CommandPoller)