objective-c 解码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了objective-c 解码相关的知识,希望对你有一定的参考价值。
URL返回值是这样的“"status":"0","info":"\u53c2\u6570\u9519\u8bef\uff01"”。怎么转换成中文呢。
// 这是 json 可以转成 NSDictionary// 先将字符串转为 NSData
NSString *str = @"\\\\"status\\":\\"0\\",\\"info\\":\\"\\u53c2\\u6570\\u9519\\u8bef\\uff01\\"";
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
// 转为 NSDictionary
NSDictionary *dir = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
// info:参数错误!
NSLog(@"info:%@",[dir objectForKey:@"info"]); 参考技术A 简单,这个字典,你把它的value拿出来,在nslog,就是汉子,如
NSLog(@"%@",[dict valueForKey:@“info”]),这样就是中文的。直接输出一个集合,就会出现你上面的"\u53c2,只是汉子编码追问
怎么把\u53c2\u6570\u9519\u8bef\uff01 转换成汉字呢
这个base64解码objective-c代码有啥问题?
【中文标题】这个base64解码objective-c代码有啥问题?【英文标题】:What's wrong with this base64 decoding objective-c code?这个base64解码objective-c代码有什么问题? 【发布时间】:2014-07-02 17:35:55 【问题描述】:我开始学习 Objective-C,并尝试在 Debian Wheezy 上使用 GCC (GNUStep) 编译此代码:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *base64String = @"SGVsbG8gV29ybGQh";
NSURL *URL = [NSURL URLWithString: [NSString stringWithFormat:@"data:;base64,%@", base64String]];
NSData *decodedData = [NSData dataWithContentsOfURL:URL];
NSLog(@"%@", decodedData);
[pool drain];
return 0;
它编译得很好,但是每次运行应用程序时它都会返回“null”,我尝试了不同的解决方案(将 NSData 转换为 NSString),但也没有吐出解码后的字符串。
是我的代码或 GNUStep 环境有问题吗?
【问题讨论】:
您的代码尝试从 URL“data:;base64,SGVsbG8gV29ybGQh”加载数据。为什么你期望这解码 Base64 字符串? 我刚刚从 SO question 中获取了这段代码:P 您能否提供该问题的链接?我在该代码中看不到任何 Base64 解码。 - 在 OS X 上,NSData 具有用于 Base-64 解码的内置方法,但我不知道这些方法是否在 GNUstep 中可用。还有许多可用的第三方库。 给你***.com/questions/19088231/base64-decoding-in-ios-7 啊哈!这很有趣,我确实知道汤米的回答***.com/a/22432808/1187415 中描述的方法。 - 但这可能在 GNUstep 中不受支持。 【参考方案1】:基本上,您传递的 url 应该指定读取数据的有效位置。因此,如果您只想将字符串转换为数据,请执行以下操作:-
NSData* decodedData = [ base64String dataUsingEncoding:NSUTF8StringEncoding];
【讨论】:
这不是问题,问题是base64解码不工作。以上是关于objective-c 解码的主要内容,如果未能解决你的问题,请参考以下文章