我的UIWebview中有一个带有JS的页面,它将一些非英文文本发送到我的Obj C代码。当我在我的Obj C代码中收到的NSlog时,会出现乱码输出。有人可以看到这里有什么问题:
JS代码:
window.open("http://nothing.com?ST=nǐ",null);
Obj C代码:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog([[request URL] absoluteString]);
return YES;
}
控制台输出:
http://nothing.com?ST = N㽲79
答案 0 :(得分:1)
您将字符串用作NSLog()
的格式。随着
NSLog(@"%@", [[request URL] absoluteString]);
您将获得预期的输出。
详细说明:ǐ的UTF-8序列为C7 90. [[request URL] absoluteString]
中shouldStartLoadWithRequest
的内容为
如果您将其用作格式字符串,则“%C”将替换为随机字符。
要摆脱百分比转义,请使用
NSString *url = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];