2015-12-02 87 views
3

在我的应用程序中,用户可以保存网页。一个请求后,我做的:将未知编码的NSData网页转换为NSString

NSString(data:responseData, encoding: NSUTF8StringEncoding) 

NSData响应NSString转换。但有些页面有NSWindowsCP1251StringEncoding编码或其他的东西,函数返回nil

如何检测编码?

+1

这可能帮助:http://stackoverflow.com/a/5436507/653513(约HTTP Content-Type头) –

+0

,所以我需要首先检查头部? – Arti

+0

我会的。尽管它仍然不是100%防弹。 CP1251页面_应具有'Content-Type:text/html; charset = windows-1251'标头集。 –

回答

1

好吧,我解决了这个名字:

var pageEncoding = NSUTF8StringEncoding 
if responseHeaderFields["Content-Type"] == "text/html;charset=ISO-8859-1" { 
    pageEncoding = NSISOLatin1StringEncoding 
} 
if responseHeaderFields["Content-Type"] == "text/html;charset=windows-1251" { 
    pageEncoding = NSWindowsCP1251StringEncoding 
}