objective-c - cocoa base64解码。和 NSString initWithData :encoding: return nil

标签 objective-c cocoa encoding base64 mime-types

我有 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/

相关文章:

ios - 将 UIView 在其父 View 中垂直和水平居中

objective-c - 更改 subview 后 UIScrollView 不遵守 minimumZoomScale

algorithm - 有没有一个简单的公式可以计算这些代码?

java - 指定Java中的默认文件编码

objective-c - 如何检查 Exposé 是否已激活?

networking - 如何在 4B/5B 编码方案中编码 0000 到 11110

ios - 设置 UIButton 的 titleLabel.font 属性不起作用

ios - 如何为我的 SexyTooltip 实例定义允许的箭头方向?

objective-c - NSView drawRect 和视网膜图像

ios - 与 AppKit 的 NSObliquenessAttributeName 等效的 CoreText 是什么?