NSString解码非标准百分比

时间:2012-05-18 14:25:09

标签: objective-c ios

我正在开发一个iOS应用程序,我有一个UIWebView女巫调用JavaScript函数回复给我一个文本编码,解码这个文本我正在使用NSString方法{{ 1}}但是这个方法的问题是我无法像这样解码spécialcaractérs:stringByReplacingPercentEscapesUsingEncoding。我怎么能解码这些caracteres? (%uxxxx)感谢您的回答

2 个答案:

答案 0 :(得分:0)

看起来像UTF8编码,而不是百分比编码。这是Unicode编码之一。我可能错了哪一个。但我认为这是UTF8。

你应该使用像stringWithUTF8String这样的方法解码(如果数据已经是NSString)或initWithData:encoding :(如果来自JavaScript的数据是NSData)

答案 1 :(得分:0)

首先感谢每一位回答我问题的忙碌者,但我选择了这个解决方案:

Unicode字符的非标准编码:%uxxxx,其中xxxx是表示为四个十六进制数字的Unicode值。任何RFC都未指定此行为,W3C已拒绝此行为。第三版ECMA-262仍包含使用此语法的escape(string)函数,但还包含encodeURI(uri)函数,该函数转换为UTF-8并对每个八位字节进行百分比编码。

我更改了使用JavaScript函数的escape()函数,使用方法encodeURIComponent(uri)对字符串进行编码;在Objective C代码中,我使用标准函数来解码我的字符串- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)encoding