как конвертировать кодировку NSString в UTF8 - PullRequest
3 голосов
/ 09 января 2012

Я сделал что-то вроде:

    NSData *dt = [mystr dataUsingEncoding:NSWindowsCP1251StringEncoding];

    NSString *str = [NSString alloc] initWithData:dt encoding:NSUTF8StringEncoding];

затем NSLog(@"%@", str);

Однако, если 'mystr' является английским, тогда NSLog напечатает это как есть, но если mystr по-арабски (например) NSLog ничего не печатает, так как я могу изменить кодировку mystr на UTF8?

Заранее спасибо.

Ответы [ 5 ]

4 голосов
/ 09 января 2012

Попробуйте это

  NSString *s = @"Some string";
  const char *c = [s UTF8String];
4 голосов
/ 09 января 2012

Ваша первая строка создает некоторые данные в кодировке cp1251.Ваша вторая строка говорит: «Считайте эти данные в строку, предполагая, что байты представляют строку в кодировке UTF8».Но поскольку байты представляют строку в кодировке cp1251, это вряд ли будет работать очень хорошо.

NSString представляет упорядоченную коллекцию символов.Внутренне он использует некоторую кодировку для хранения этих символов в памяти, но его интерфейс обеспечивает независимый от кодирования доступ к строке, и поэтому вы можете считать NSString независимой от кодирования.Если вам нужен набор байтов, представляющих строку в кодировке UTF8, то вам не нужна строка NSString.Вы хотите, чтобы строка NSString выдавала такой набор байтов, возможно, используя метод -dataUsingEncoding:, который вы уже нашли.

1 голос
/ 11 декабря 2013

импорт

#import "NSString+URLEncoding.h" and
#import "NSString+URLEncoding.m" files

после этого, когда вы выполняете кодирование, запишите в файл .h этот метод

-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;

после этого записать в .m файл метод реализации

-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding 
{
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
                                                               (CFStringRef)self,
                                                               NULL,
                                                               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                                               CFStringConvertNSStringEncodingToEncoding(encoding)));
}

после этого используйте вот так

NSString *keyword=@"sample text"; 

здесь передайте свою строку, что угодно

NSString *url = [NSString stringWithFormat:@"%@",[keyword urlEncodeUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"%@",url);
0 голосов
/ 09 января 2012

Вы можете попробовать это 1) NSString to NSData (NSWindowsCP1251StringEncoding

NSString *text=@"This is Sample Text Conversion.....";

NSData *data=[text dataUsingEncoding:NSWindowsCP1251StringEncoding];

2) Обрабатывает процесс обращения.

NSString *textRev=[[NSString alloc]initWithData:data encoding:NSWindowsCP1251StringEncoding];

 NSLog(@" Actual String.. %@",textRev);
0 голосов
/ 09 января 2012

Вы пробовали [mystr UTF8String]?Это возвращает символ *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...