无法在 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 图表....我希望这对您有所帮助。
我从 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 图表....我希望这对您有所帮助。