我有 MIME header :
Subject: =?ISO-2022-JP?B?GyRCJzEnYidWJ1UnWSdRJ1wnURsoQg==?=
=?ISO-2022-JP?B?GyRCJ1kbKEIgGyRCLWIbKEIxNzUzNTk=?=
=?ISO-2022-JP?B?IBskQidjGyhCIBskQidjJ1EnWydkJ1EbKEI=?=
=?ISO-2022-JP?B?IBskQidXGyhCLRskQideJ2AnUidaJ10nbhsoQg==?=
当我尝试解码第一个字符串GyRCJzEnYidWJ1UnWSdRJ1wnURsoQg==
(base64解码,然后NSSring initWithData:编码:
),好吧。我的代码适用于数百个不同的 MIME header ,除了以下内容......
...当我尝试解码第二个环GyRCJ1kbKEIgGyRCLWIbKEIxNzUzNTk=
时,NSString initWithData:encoding:
返回nil
例如,http://2cyr.com/decode/?lang=en正确解码所有字符串(在使用此站点之前,不要忘记从 Base64 编码此字符串)。
最佳答案
这不是一个 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:这不是一个有效的字符。
关于objective-c - cocoa base64解码。和 NSString initWithData :encoding: return nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10869255/