带有土耳其语文本的HTML未显示在UIWebview中
HTML with Turkish text not displaying in UIWebview
我的iOS项目中有一个UIWebview,我正在从web服务加载英语和土耳其语内容。
在UIWebview中显示保存的文件的内容之前,我用适当的html标题包装html字符串,然后将其保存到本地文件中。
这是我用来保存和显示HTML的代码。
-(void) prepareHTML:(NSString*) html {
tableOfcontentsHashMap = [NSMutableDictionary new];
// html = [NSString stringWithFormat:@"<html><head><meta http-equiv='"Content-Type'" content='"text/html;charset=UTF-8'"></head><body>%@</body></html>",html];
html = [NSString stringWithFormat:@"<html lang='"fr'"><head><meta content='"text/html; charset=UTF-8'" http-equiv='"content-type'"/><meta name='"viewport'" content='"width=320; initial-scale=0.5; maximum-scale=1.0; user-scalable=1;'"/></head><body style='"width:500;font-size:20px;'">%@</body></html>",html];
HTMLDocument *document = [HTMLDocument documentWithString:html];
NSArray *headers = [document nodesMatchingSelector: @"h1,h2"];
NSInteger x = 0;
for (HTMLElement *header in headers) {
NSMutableOrderedSet *children = [header.parentNode mutableChildren];
NSString * hash =[NSString stringWithFormat: @"heading_%ld", (long)x];
HTMLElement *wrapper = [[HTMLElement alloc] initWithTagName:@"div"
attributes:@{@"id":
hash}];
[children insertObject:wrapper atIndex:[children indexOfObject:header]];
[tableOfcontentsHashMap setObject:hash forKey:header.textContent];
x++;
}
NSLog(@"Final HTML: %@",[document serializedFragment]);
[self writeHtmlToFile:[document serializedFragment] onWriteCallback:^(id result) {
if(result) {
NSLog(@"FilePath: %@",result);
htmlFile = result;
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[self.webView loadData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:nil];
} else {
[Utils showMessageHUDInView:self.view withMessage:@"Error Displaying information" afterError:YES];
}
}];
}
在上面的代码中,带有英语的HTML显示得很好,但是带有土耳其语文本的HTML根本不显示,即使加载得很好。
我已经尝试了几种编码技巧/建议,可以在代码中看到。但我还没能让它显示土耳其HTML字符串。
如有任何建议,我们将不胜感激。
谢谢。
这一切都是关于字符集的。在HTML
<head>
的meta
内容中使用ISO 8859-9
而不是UTF-8
作为字符集
这个链接提到了土耳其字符集。
土耳其计算机可以使用ISO 8859-9("拉丁语5")字符集与拉丁语1相同,只是很少使用冰岛语字符"eth"、"thorn"answers"带有尖锐重音的y"替换为所需的土耳其语字符。如果您在中阅读土耳其语文本维基百科,当你看到这些冰岛文字时,它们可能是本应为土耳其用户(使用土耳其电脑的用户可能看不到它们)。如果您将土耳其语文本输入维基百科,注意Bomis服务器将网页标识为ISO8859-1,并且没有办法覆盖这一点,所以即使这些字符对您来说似乎是正确的,它们不是正确编码的非土耳其维基读者的观点。
希望它能有所帮助。
根据上面的答案,我能够在代码中找到这个具有正确方法的链接。
我还必须用NSWindowsCP1254StringEncoding
保存我的文件,并在meta
标头中使用windows-1254
字符集。
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在UIWebView中查找并突出显示带变音符号的阿拉伯语文本
- Xcode-UIWebview不显示CSS、Javascript或外部内容
- 突出显示 UIWebView 中的文本
- 突出显示表视图单元格中的 uiwebview 文本
- 为什么获胜'我的UIWebView显示了一个Javascript YouTube播放器iFrame
- 在UIWebView中以编程方式显示键盘
- 如何在uiwebview中使用显示nsstring内容
- 带有土耳其语文本的HTML未显示在UIWebview中
- 在UIWebview中显示网站中特定的HTML/Javascript元素
- 使用javascript/uiwebview-ios动态高亮显示
- iOS UiWebView/页面可见性Api:“;页面显示”;事件未启动