1

我有 MIME 标头:

Subject: =?ISO-2022-JP?B?GyRCJzEnYidWJ1UnWSdRJ1wnURsoQg==?=
=?ISO-2022-JP?B?GyRCJ1kbKEIgGyRCLWIbKEIxNzUzNTk=?=
=?ISO-2022-JP?B?IBskQidjGyhCIBskQidjJ1EnWydkJ1EbKEI=?=
=?ISO-2022-JP?B?IBskQidXGyhCLRskQideJ2AnUidaJ10nbhsoQg==?=

当我尝试解码第一个字符串GyRCJzEnYidWJ1UnWSdRJ1wnURsoQg==(base64 decode 然后NSSring initWithData: encoding:)时,好的。我的代码适用于数百种不同的 MIME 标头,除了以下...

...当我尝试解码第二个 sringGyRCJ1kbKEIgGyRCLWIbKEIxNzUzNTk=时,NSString initWithData:encoding:返回nil

例如,http://2cyr.com/decode/ ?lang=en正确解码所有字符串(不要忘记在使用此站点之前从 base64 编码此字符串)。

4

2 回答 2

2

这不是 base64 问题,而是 ISO-2022-JP 问题。实际上这是一个 JIS-X-0208 问题。如果您查看 base64 解码(但仍然是 ISO-2022-JP 编码)字符串,您会看到它包含序列ESC $ B - b(字节 9 到 13)。前三个是转换为 JIS-X-0208-1983 的 ISO-2022-JP 移位序列(详见RFC 1468),接下来的两个应该是字符的 2 字节编码,但如果你算出它位于未定义的kuten网格的第 13 行。

tl;博士:那不是一个有效的字符。

于 2012-06-03T21:02:50.233 回答
0

=也许您的字符串中缺少决赛?

于 2012-06-03T10:13:58.967 回答