我正在开发一个邮件应用程序,但在解码 MIME 编码的文本时遇到了一些麻烦。我正在使用 MimeUtility.decode() 但它并不适用于每个编码文本。一些文本被正确解码,但其他文本不能。
这些无法解码的编码文本尤其有utf-8和iso-8859-9编码类型。
我该如何解决这个问题??
这是我用来解码的代码
MimeUtility.decodeText(text);
这些是失败文本的示例:
最佳答案
****解决方案*****(感谢@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/