为了账号安全,请及时绑定邮箱和手机立即绑定

使用Objective C / Cocoa来取消unicode字符,即\ u1234

使用Objective C / Cocoa来取消unicode字符,即\ u1234

HUWWW 2019-09-02 09:07:51
我从中获取数据的一些站点返回UTF-8字符串,其中UTF-8字符被转义,即: \u5404\u500b\u90fd是否有内置的可可功能可能有助于此,或者我必须编写自己的解码算法。
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

没有内置函数可以进行C unescaping。


你可以欺骗一点,NSPropertyListSerialization因为“旧文本样式”plist支持C转义通过\Uxxxx:


NSString* input = @"ab\"cA\"BC\\u2345\\u0123";


// will cause trouble if you have "abc\\\\uvw"

NSString* esc1 = [input stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];

NSString* esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];

NSString* quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""];

NSData* data = [quoted dataUsingEncoding:NSUTF8StringEncoding];

NSString* unesc = [NSPropertyListSerialization propertyListFromData:data

                   mutabilityOption:NSPropertyListImmutable format:NULL

                   errorDescription:NULL];

assert([unesc isKindOfClass:[NSString class]]);

NSLog(@"Output = %@", unesc);

但请注意,这不是很有效。如果你编写自己的解析器会好得多。(顺便说一句,您是在解码JSON字符串吗?如果是,您可以使用现有的JSON解析器。)


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 728 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信