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 mail 服务器上的 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 文件
WildFly 21 CLI 无法识别 Amazon Linux 2 上的现有文件路径
UnicodeEncodeError:'ascii'编解码器无法对特殊名称的字符进行编码[重复]