我有一个用UTF8编码的NSstring。我想解码它。
我试过了,但它不起作用:
NSString *decodedString = [NSString stringWithUTF8String:[encodedString cStringUsingEncoding:[NSString defaultCStringEncoding]]];
我该怎么做?
由于
答案 0 :(得分:7)
只有cStringUsingEncoding:
是NSString对象,才能将encodedString
发送到encodedString
。拥有一个NSString对象是你想要达到的目标。此外,该方法不解码字符串,它使用您要求的编码编码字符串;因此,在您显示的代码中,您要求(已编码的)字符串以某种随机编码(默认C字符串编码)进行编码,然后尝试将结果解码为UTF-8。那不行。
您没有指定encodedString
使用的类型。无论哪种方式,您都需要通过传递encodedString
及其编码来创建NSString对象。
encodedString
是NSData对象,请使用the initWithData:encoding:
method。initWithCString:encoding:
method或(仅当它是UTF-8时)the initWithUTF8String:
method。initWithBytes:length:encoding:
method。除了initWithUTF8String:
之外的所有这些都要求您指定编码(initWithUTF8String:
按定义执行),除initWithData:encoding:
之外的所有编码都在自动释放便利版本中{{1}而不是+stringWith…
)。