Как преобразовать строку NSString в строку в кодировке TIS-620 - PullRequest
0 голосов
/ 20 мая 2010

В яблочном документе я вижу, что есть способ преобразовать строку UTF8 в строку ASCII, например:

NSData *asciiData = [theString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *asciiString = [[NSString alloc] initWithData:asciiData encoding:NSASCIIStringEncoding];

Но моему приложению для публикации на сайте требуется строка TIS-620, поэтому я пытаюсь сделать то же самое

NSData *asciiData = [newPost.header dataUsingEncoding:kCFStringEncodingMacThai allowLossyConversion:YES];
NSString *asciiString = [[NSString alloc] initWithData:asciiData encoding:kCFStringEncodingMacThai];
NSLog(@"%@", asciiString);

Вывод, который я получил, выглядит следующим образом ???????????.

Кто-нибудь знает, как правильно конвертировать NSString в TIS-620? Большое спасибо.

1 Ответ

2 голосов
/ 20 мая 2010

Во-первых, TIS-620 является подмножеством ISO-8859-11, поэтому вы должны использовать кодировку строки kCFStringEncodingISOLatinThai вместо kCFStringEncodingMacThai.

Кроме того, кодирование CF нельзя напрямую использовать для декодирования строки NSS. Сначала необходимо преобразовать кодировку CF в кодировку NS.

NSStringEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatinThai);
NSData *asciiData = [newPost.header dataUsingEncoding:enc allowLossyConversion:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...