0

我有一封 SMTP 电子邮件,它是日文的,有些是英文的。电子邮件的主题以 UTF-8、base64 编码。

主题:=?UTF-8?B?5Y2K5bCO5L2T6KO96YCg6KOF572u44OX44Os44OT44Ol44O844OO44O8?= =?UTF-8?B?44OIIDog5b6M5bel56iL44Oh44O844Kr44O844GM5by344GE?=

我如何检测这是否是日文/中文并将其解码为日文/中文。

我可以在 Perl/Java/Python 中实现这一点吗?

4

3 回答 3

5

这里有两个步骤。首先解码标题:

如果您有电子邮件,请使用高级电子邮件解析器,例如Courrielsubject访问者将返回解码的主题。

如果您只有字符串,请使用Encode::MIME::Header

use Encode qw(decode);
decode 'MIME-Header', 'Subject: =?UTF-8?B?5Y2K5bCO5L2T6KO96YCg6KOF572u44OX44Os44OT44Ol44O844OO44O8?= =?UTF-8?B?44OIIDog5b6M5bel56iL44Oh44O844Kr44O844GM5by344GE?='
__END__
Subject: 半導体製造装置プレビューノート : 後工程メーカーが強い

第二步是找出语言。作为人类,我已经可以看出这是日本人。假名字符是线索,它们只出现在日语写作中。如果这就是您所需要的,那么如果字符串匹配\p{Kana},它可能是日语。

对于更通用的解决方案,您可以使用语言检测库,例如Lingua::Identify ::CLDLingua::IdentLingua::LidLingua::YALIWebService::Google::Language

于 2013-06-26T14:11:37.627 回答
1

您可能需要检查这些

Mozilla 开发的用于 FireFox 的chardet字符集检测。源代码

jchardet是来自 mozilla 的自动字符集检测算法的源代码的 java 端口。

于 2013-06-26T06:50:34.837 回答
-1

使用 Java,您需要一个库来将 Base 64 字符串解码为二进制,例如apache codec

然后是直截了当的:

  byte[] b = Base64.decodeBase64("5Y2K5bCO5L2T6KO96YCg6KOF572u44OX44Os44OT44Ol44O844OO44O8");
  String s = new String(b, "UTF-8");
  System.out.println(s);

它打印:(半導体製造装置プレビューノー我不知道这意味着什么,但它确实看起来像日语)。

于 2013-06-26T06:41:11.280 回答