我的iOS项目中有一个UIWebview,我在其中从Web服务加载英语和土耳其语内容。

我用适当的HTML标头包装html字符串,然后将其保存到本地文件中,然后在UIWebview中显示已保存文件的内容。

这是我用来保存和显示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字符串。

来自这里的任何建议将不胜感激。

谢谢。

最佳答案

这全是关于字符集的。在ISO 8859-9 UTF-8meta内容中使用HTML而不是<head>作为字符集

link是针对土耳其字符集提及的。


  土耳其语计算机可能使用字符集ISO 8859-9(“拉丁5”),
  与拉丁文1相同,除了很少使用的冰岛文
  字符“ eth”,“ thorn”和“ y重音”替换为
  所需的土耳其语字符。如果您正在阅读土耳其语文字
  维基百科,当您看到这些冰岛语字符时,可能是
  本应是土耳其语的用户(使用土耳其语计算机的用户可能或可能
  无法正确看到它们)。如果您要输入土耳其文字
  维基百科,请注意Bomis服务器将网页标识为ISO
  8859-1,并且无法覆盖它,因此即使这些
  字符对您来说似乎正确,但它们的编码方式不正确
  非土耳其语Wiki阅读器的观点。


希望它会有所帮助。

关于javascript - HTML和土耳其语文本未显示在UIWebview中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33607310/

10-11 08:25