gpt4 book ai didi

java - Websphere 8.5.5 UTF-8 编码问题

转载 作者:行者123 更新时间:2023-11-30 06:52:47 24 4
gpt4 key购买 nike

我在 Websphere 8.5.5 上的应用程序有问题。这是一个用于发送电子邮件的 spring rest 应用程序。在我的服务中,我收到邮件详细信息,并使用 spring 将其转发给收件人。它工作正常,但是当我尝试发送具有非 ascii 字符的消息时,消息到达时特殊字符被问号替换。 UTF-8 编码不起作用。在我的电脑中,应用程序在 Liberty Profile 服务器上运行,最初它也不起作用。我用谷歌搜索了这个问题,发现 spring 需要一个过滤器来解释特殊字符,所以我将这行添加到我的web.xml

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

在 Liberty 上运行良好,但当我在 Websphere 上部署应用程序时却没有。

我尝试使用 String 构造函数直接翻译 utf-8 中的消息:

new String(byteArray, "UTF-8")

同样的事情发生了。它适用于自由,但不适用于 Websphere。然后我发现您可以通过添加以下 JVM 参数强制 WebSphere 使用 UTF-8:

-Dclient.encoding.override=UTF-8
-Dfile.encoding=UTF-8

就像这个答案中解释的那样: Character encoding issues on websphere

我在我的服务器上设置参数并重新启动,就像我在互联网上找到的许多指南中所解释的那样,但显然它没有用。

这是运行 WAS 的 linux 机器中 locale 命令的输出:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

我被卡住了,不知道还能尝试什么。

如有任何帮助,我们将不胜感激。

最佳答案

encoding.properties文件位于 <PROFILE_ROOT>/properties是另一个包含编码设置的位置。默认值(英语)为 en=ISO-8859-1 .将其更新为 en=UTF-8并重启服务器。

关于java - Websphere 8.5.5 UTF-8 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399270/

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