преобразовать NSData в NSString с кодировкой windows-1255 - PullRequest
1 голос
/ 13 июня 2011

В моем приложении я загружаю rss файл с encoding = "windows-1255". Я прочитал, что мне нужно преобразовать его в UTF8, прежде чем передать его в NSXMLParser.

Если это правда, (любые комментарии по этому поводу помогут, конечно, ..)

У меня также есть этот пример кода, но я не вижу const для кодировки 1255.

NSString *myStr = [[NSString alloc]initWithData:myData encoding:NSWindowsCP1252StringEncoding];

Как я могу конвертировать с 1255 вместо 1252?

Тпй

Ответы [ 3 ]

1 голос
/ 08 сентября 2014

На самом деле это возможно.

NSString* encoding = @"windows-1255";

CFStringEncoding cfEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)encoding);
NSStringEncoding nsEncoding = CFStringConvertEncodingToNSStringEncoding(cfEncoding);

NSString* decodedString = [[NSString alloc] initWithData:data encoding:nsEncoding];

CFStringConvertIANACharSetNameToEncoding преобразует имя кодировки в значение CFStringEncoding, а CFStringConvertEncodingToNSStringEncoding преобразует CFStringEncoding в NSStringEncoding, который можно использовать для созданияNSString из NSData.

0 голосов
/ 14 июня 2011

Я предлагаю вам пойти дальше и попытаться проанализировать ваш файл напрямую.Не пытайтесь решить проблему, если вы на самом деле с ней не сталкивались.

Существует высокая вероятность того, что ваш файл будет хорошо проанализирован без какого-либо экзотического преобразования, особенно если это стандартная лента RSS, независимо от того,версия.

0 голосов
/ 13 июня 2011

Похоже, в SDK нет такой кодировки. Однако вы можете написать кодировку самостоятельно - поместите символы Unicode (например, http://en.wikipedia.org/wiki/Windows-1255,) в массив [0..255] и поместите нужный символ в строку вместо каждого байта в NSData.

...