2014-03-06 2 views
0

Когда я конвертировать NSString в NSData, после преобразования из NSData в NSStringКак конвертировать NSData в NSString Японии

NSString *input = @"ステータス"; 
    NSData *output = [NSData dataWithBytes:[input UTF8String] length:[input length]]; 
    NSString *output2 = [[NSString alloc] initWithData:output encoding:NSUTF8StringEncoding]; 

output2 равна нулю.
Если введен символ алфавита, это нормально.

Пожалуйста, помогите мне.

ответ

4

Правильное преобразование

NSData* output = [input dataUsingEncoding:NSUTF8StringEncoding]; 

Проблема с кодом, что [input length] дает число символов Unicode, а не количество UTF-8 байт.

+0

Хотя ваш ответ является наилучшим решением, я думаю, что другим было бы заменить '[input length]' на 'strlen ([input UTF8String])'. – rmaddy

+0

@rmaddy: NSString * может * содержать NUL-символы, а затем strlen() сократит строку. Но этот случай, вероятно, имеет больший академический интерес. –

+0

Правильно! Большое спасибо. – Dien

Смежные вопросы