无法在 iOS Objective C 中解码包含日语文本的 javascript 转义字符串

Unable to decode a javascript escaped string which contains japanese text in iOS ObjectiveC

我从 javascript 转义的 UIWebview 中获取以下字符串 n 个 cookie。

"%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

正确的解码方式是什么。

谢谢。

我的第一个快速解决方案是分离 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 图表....我希望这对您有所帮助。