猿问

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

我从中获取数据的一些站点返回UTF-8字符串,其中UTF-8字符被转义,即: \u5404\u500b\u90fd

是否有内置的可可功能可能有助于此,或者我必须编写自己的解码算法。


HUWWW
浏览 733回答 3
3回答

哈士奇WWW

没有内置函数可以进行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解析器。)
随时随地看视频慕课网APP
我要回答