2014-03-06 42 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]; 

的輸出2爲零。
如果輸入是字母字符,就可以。

請幫幫我。

回答

4

正確的轉換是

NSData* output = [input dataUsingEncoding:NSUTF8StringEncoding]; 

與您的代碼的問題是,[input length]給出的Unicode字符數,而不是UTF-8字節數。

+0

雖然你的答案是最好的解決方案,但我認爲另一種方法是用'strlen([input UTF8String])'替換'[input length]'。 – rmaddy

+0

@rmaddy:NSString *可能*包含NUL字符,然後strlen()會縮短字符串。但是這種情況可能更多的是學術興趣。 –

+0

它正確!謝謝你很多。 – Dien