Search code examples
ioscocoa-touchcharacter-encodingnsstringnsdata

Convert NSData webpage with unknown encoding to NSString


In my app the user can save web pages. After a request, I do:

NSString(data:responseData, encoding: NSUTF8StringEncoding)

to convert my NSData response to NSString. But some pages have a NSWindowsCP1251StringEncoding encoding, or something else, and the function returns nil.

How can I detect the encoding?


Solution

  • Ok, i solved this like:

    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
    }