Кодирование и декодирование с использованием UTF-8 в iPhone - PullRequest
3 голосов
/ 13 января 2011

Я ищу пример, демонстрирующий, как я могу кодировать, а затем декодировать ту же строку, используя UTF-8. Кодирование, а затем декодирование означает, что я хочу реализовать методы в двух областях, где один может его кодировать, а другой может его декодировать.

Я видел API, но не добился большого успеха:

  • stringWithCString:encoding:
  • stringWithUTF8String:
  • stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;

EDITED
У меня есть строка øæ-test-2.txt, которую я кодирую следующим образом:

char *s = "øæ-test-2.txt";
NSString *enc = [NSString stringWithCString:s encoding:NSASCIIStringEncoding];

но я получаю øæ-test-2.txt как вывод. Теперь я хочу вернуть исходную строку, т.е. øæ-test-2.txt


EDITED
Я получаю øæ-test-2.txt с сервера, и мне нужно øæ-test-2.txt, расшифровав его. Я могу получить вывод по ссылке: http://www.cafewebmaster.com/online_tools/utf_decode

Пожалуйста, попробуйте воспользоваться ссылкой, и вы поймете мою проблему.

Буду очень признателен, если кто-нибудь даст нам подсказку, урок или укажет мне правильное направление.

Привет

Ответы [ 2 ]

7 голосов
/ 13 января 2011

Чтобы превратить объект NSString в C-строку UTF8, используйте UTF8String

char *utf8string = [@"A string with ümläuts" UTF8String];

Чтобы превратить C-строку UTF8 в объект NSString, используйте stringWithUTF8String: или initWithUTF8String:

NSString *string = [NSString stringWithUTF8String:utf8string];

Обратите внимание, что NSString объекты реализованы как UTF-16, поэтому у вас не может быть "UTF-8 NSString" (и в любом случае кодировка должна рассматриваться как деталь реализации).

2 голосов
/ 19 декабря 2012

Вместо

char *utf8string = [@"A string with ümläuts" UTF8String];

Это должно быть

const char *utf8string = [@"A string with ümläuts" UTF8String];

В противном случае возникнет проблема несовместимого типа.

...