java - MimeUtility.decode() 不适用于每个编码文本

标签 java encoding utf-8 mime decoding

我正在开发一个邮件应用程序,但在解码 MIME 编码的文本时遇到了一些麻烦。我正在使用 MimeUtility.decode() 但它并不适用于每个编码文本。一些文本被正确解码,但其他文本不能。

这些无法解码的编码文本尤其有utf-8和iso-8859-9编码类型。

我该如何解决这个问题??

这是我用来解码的代码

MimeUtility.decodeText(text);

这些是失败文本的示例:

Failing Text 1

Failing Text 2

最佳答案

****解决方案*****(感谢@user_xtech007)

我通过使用正则表达式拆分多个编码部分来解决解码编码部分的问题。

这是我使用的方法的代码

private final String ENCODED_PART_REGEX_PATTERN="=\\?([^?]+)\\?([^?]+)\\?([^?]+)\\?=";

private String decode(String s)
{
    Pattern pattern=Pattern.compile(ENCODED_PART_REGEX_PATTERN);

    Matcher m=pattern.matcher(s);

    ArrayList<String> encodedParts=new ArrayList<String>();

    while(m.find())
    {
        encodedParts.add(m.group(0));

    }

    if(encodedParts.size()>0)
    {
        try
        {
            for(String encoded:encodedParts)
            {
                s=s.replace(encoded, MimeUtility.decodeText(encoded));
            }

            return s;

        } catch(Exception ex)
        {
            return s;
        }
    }
    else
        return s;

}

关于java - MimeUtility.decode() 不适用于每个编码文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23044412/

相关文章:

java - iReport:如何在没有数据行的情况下隐藏带有文本字段的行包含不同类型的数据

java - Subclipse 未上传 JRE

java - 在命令提示符下运行时出现 ClassNotFoundException

php - 解析带有特殊字符的 XML (UTF-8)

powershell - Powershell,无法输入带有某些非ASCII字符的哈希表键(在脚本中)

java - 如何在 Spring 中更新 @Autowired String bean 的值?

java - 如何使用 glassfish 服务器配置内容类型和内容编码?

.net - 保证唯一性的最短可能的 Guid 编码

ios - 类型 "character set"没有成员 "utf8"

在 Windows 上提供 utf-8 文件功能的 php 库?