我有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标头,除了......
...当我尝试解码第二个GyRCJ1kbKEIgGyRCLWIbKEIxNzUzNTk=
时,NSString initWithData:encoding:
返回nil
例如,http://2cyr.com/decode/?lang=en正确解码所有字符串(不要忘记使用此网站从base64编码此字符串)。
答案 0 :(得分: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字节编码,但是如果你work it out它位于 kuten 网格的第13行,它未定义。
tl; dr:那不是一个有效的角色。
答案 1 :(得分:0)
也许你错过了字符串中的最终=
?