无法解码iOS ObjectiveC中包含日文文本的javascript转义字符串

时间:2015-08-04 06:14:30

标签: javascript ios objective-c uiwebview decoding

我从UIWebview获取以下字符串n cookie,这是javascript转义。

"%7B%27status%27%20%3A%20400%2C%20%27message%27%20%3A%20%27%u30C6%u30B9%u30C8%u30E1%u30C3%u30BB%u30FC%u30B8%27"

我正在使用以下函数来获取非转义字符串。

NSString *decodeString = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
decodeString = [decodeString stringByReplacingOccurrencesOfString:@""" withString:@"\""];

预期输出

"{'status' : 400, 'message' : 'テストメッセージ'}"

*decodeString即将nil

解码的正确方法是什么。

感谢。

1 个答案:

答案 0 :(得分:0)

我的第一个快速解决方案是separe utf图表和unicode图表,如下所示:

NSString *string = @"%7B%27status%27%20%3A%20400%2C%20%27message%27%20%3A%20%27%u30C6%u30B9%u30C8%u30E1%u30C3%u30BB%u30FC%u30B8%27";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"%27message%27(.*)%27" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
NSLog(@"%@", modifiedString);

NSString *decodeString = [modifiedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@", decodeString);

最好使用这个:

NSString *str = @"%7B%27status%27%20%3A%20400%2C%20%27message%27%20%3A%20%27%u30C6%u30B9%u30C8%u30E1%u30C3%u30BB%u30FC%u30B8%27";
str = [str stringByReplacingOccurrencesOfString:@"%u" withString:@"\\u"];
NSString *convertedStr = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSLog(@"%@",convertedStr);

在这种情况下输出:

{'status' : 400, 'message' : '\u30C6\u30B9\u30C8\u30E1\u30C3\u30BB\u30FC\u30B8' 

在这种情况下你必须处理unicode图表....我希望这有帮助。