Javascript窗口.open中的UTF8字符串将被UIWebview's应该启动LoadWithReque
UTF8 strings in Javascript window.open to be intercepted by UIWebview's shouldStartLoadWithRequest
我的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
您使用字符串作为NSLog()
的格式。带
NSLog(@"%@", [[request URL] absoluteString]);
您将获得预期的输出。
详细的解释:在UTF-8的序列中,音为C790。shouldStartLoadWithRequest
中[[request URL] absoluteString]
的内容为
http://nothing.com/?ST=n%C7%90
如果将其用作格式字符串,则"%C"将被一个随机字符取代。
要消除百分比逃逸,请使用
NSString *url = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
相关文章:
- 我的jQuery插件参数没有正确启动,遇到了问题
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- 从控制器返回后Ajax启动事件激发
- Meteor上的启动页面
- 如何防止网页加载后自动启动功能
- 如何从JavaScriptInterface启动Navigation Drawer
- window.on.scroll事件未启动
- 单击按钮后启动javascript提示
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- spine.js在启动时填充模型实例
- 如何在所有ng点击事件AngularJS上启动一个方法
- jQuery悬停在没有鼠标悬停的情况下启动
- SignalR客户端启动连接时如何设置用户
- Meteor:在启动时将html注入客户端文件
- Angular UI启动日期选择器问题
- 如何用低音量自动启动Youtube视频(iframe)
- jQuery mouseup在拖离链接后未启动
- 在同一选项卡中启动下载,而无需在Javascript中打开新选项卡或窗口
- 为什么我的控制器没有启动函数.js脚本
- Javascript窗口.open中的UTF8字符串将被UIWebview's应该启动LoadWithReque