Wildfly 9.x 无法对希腊附件文件名进行编码

Posted

技术标签:

【中文标题】Wildfly 9.x 无法对希腊附件文件名进行编码【英文标题】:Wildfly 9.x fails encoding greek attachment filenames 【发布时间】:2016-05-02 20:04:27 【问题描述】:

我正在使用javax.mail 调用邮件服务器并将文件作为邮件附件发送,编码文件名如下:MimeUtility.encodeText(filename,"UTF-8",null)

虽然这在 WildFly 8 上运行良好,但在 same ma​​il 服务器上的 WildFly 9.x 上却失败了。我的意思是附件描述是以这种格式接收的:=UTF-8BzrTOv866zrnOvM63IM68zrUgzrXOu867zrfOvc65zrrOsS5wZGY==

我一直在尝试:

1) 在应用服务器上找到相关设置 - 不走运。

2) 使用ISO-8859-7 进行编码,这只是偶尔起作用,因为它似乎取决于文件名长度和某些字符的存在。

3) 在客户端 (microsoft outlook) 上找到一个相关设置,我想它会丢失一些成功解码的信息。

有什么想法吗?

提前致谢!!

【问题讨论】:

你好。你有没有设法解决这个问题?我面临着完全相同的问题。谢谢。 @GGrec 最初的问题是“它在 WildFly 9 上失败”。这是什么意思?对我来说,不完全清楚什么和哪里出了问题。了解 file.encoding 系统属性和 servlet 编码所使用的设置可能也很有用。 你试过这个 - ***.com/a/31674972/5934435 吗? 尝试使用 MimeUtility.encodeText(filename,"UTF-8","B") @ZaheerBaloch 这也不起作用。我最终去除了字符重音,这是一个临时解决方案。 【参考方案1】:

为了测试您的问题,我创建了一个演示项目here。它在各个部分发送带有非 ascii 符号的消息,但不使用 encodeText,因为它由 Mail API 自动处理。我用 Wildfly 8、9、10 对其进行了测试,以向http://mailtrap.io 发送消息。

第一个屏幕显示Wildfly 8发送的消息。附件未正确发送,因此不存在:

第二个屏幕是Wildfly 9 发送的消息(10 相同)。如您所见,有一个带有正确文件名的附件:

那么这里可能是什么问题?

Wildfly 8 附带 Java Mail API 1.5.1 Wildfly 9 附带 Java Mail API 1.5.3 Wildfly 10 附带 Java Mail API 1.5.5

我认为您在 Java Mail 1.5.1 版中遇到了错误。

您很可能在针对 Wildfly 8 进行编码时解决了该错误(手动使用 encodeText),现在该解决方法给您带来了问题。

【讨论】:

我删除了解决方法。我们使用的是 WF 10。显然,在某些机器上它可以正常工作,而在其他机器上它会用问号替换特殊字符,甚至用“noname”替换整个文件名。可以有机器相关的设置吗? @GGrec 可能,你应该为java指定默认编码:bin/standalone.sh -Dfile.encoding=UTF-8 @GGrec 对不起,上面的评论是错误的:(,你应该调整bin/standalone.conf:JAVA_OPTS=".... -Dfile.encoding=UTF-8" @GGrec 你的发现是什么?设置默认编码后有什么不同吗? 我最终将去除重音作为第二种解决方法。不过会尝试你的建议。

以上是关于Wildfly 9.x 无法对希腊附件文件名进行编码的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Wildfly 10 Web 控制台下载 EAR 文件

无法显示希腊字符 .mdb 文件(PHP 和 ODBC)

WildFly 21 CLI 无法识别 Amazon Linux 2 上的现有文件路径

UnicodeEncodeError:'ascii'编解码器无法对特殊名称的字符进行编码[重复]

无法在 JBoss EAP 6.4 环境中使用 wildfly-maven-plugin 2.0.1 进行部署

如何将 root(/) 上下文中的 war 文件部署到 Wildfly 9.0.1 版