【问题标题】:Convert NSData webpage with unknown encoding to NSString将未知编码的 NSData 网页转换为 NSString
【发布时间】:2015-12-02 20:45:19
【问题描述】:

在我的应用中,用户可以保存网页。请求后,我会这样做:

NSString(data:responseData, encoding: NSUTF8StringEncoding)

将我的NSData 回复转换为NSString。但是有些页面有NSWindowsCP1251StringEncoding编码,或者别的什么,函数返回nil

如何检测编码?

【问题讨论】:

  • 这可能会有所帮助:stackoverflow.com/a/5436507/653513(关于 HTTP 内容类型标头)
  • 所以我需要先检查标题?
  • 我愿意。虽然它仍然不是 100% 防弹的。 CP1251 页面应该设置Content-Type: text/html;charset=windows-1251 标头。
  • 是的,其他页面有:"Content-Type": "text/html;charset=ISO-8859-1"

标签: ios cocoa-touch character-encoding nsstring nsdata


【解决方案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
}

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多