0

我的 UIWebview 中有一个带有 JS 的页面,用于向我的 Obj C 代码发送一些非英语文本。当我对我在 Obj C 代码中收到的内容进行 NSlog 时,我得到了乱码输出。有人可以看到这里出了什么问题:

JS代码:

window.open("http://nothing.com?ST=nǐ",null);

对象 C 代码:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

   NSLog([[request URL] absoluteString]);
   return YES;

}

控制台输出:

http://nothing.com?ST =n㽲79

4

1 回答 1

1

您将字符串用作. NSLog()

NSLog(@"%@", [[request URL] absoluteString]);

你会得到预期的输出。

详细解释:ǐ的UTF-8序列是C7 90。in的内容[[request URL] absoluteString]shouldStartLoadWithRequest

http://nothing.com/?ST=n%C7%90

如果将其用作格式字符串,“%C”将被随机字符替换。

要摆脱百分比转义,请使用

NSString *url = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
于 2012-08-26T16:01:44.333 回答