在我的应用程序中,我有NSString
从网络获取字符串:
高瀬 - 虎柄の毘沙門天
现在我想将此字符串复制到我的Object中的本地NSString
,所以我写道:
self.metaDataString = [NSString stringWithString:tempMetaDataString];
现在metaDataString
我有:
é«ç¬ - èæã®æ¯æ²é天
什么可以解决这个问题?
我也尝试了这个:
self.metaDataString = [NSString stringWithUTF8String:[tempMetaDataString UTF8String]];
我如何得到tempMetaDataString
:
NSMutableString *tempMetaDataString = [NSMutableString stringWithCapacity:0];
//This line i loop over the bytes array size
[tempMetaDataString appendFormat:@"%c", bytes[i]];
这是字节数组:
UInt8 bytes[kAQBufSize];
length = CFReadStreamRead(stream, bytes, kAQBufSize);
答案 0 :(得分:2)
此行不适用于多字节字符:
[tempMetaDataString appendFormat:@"%c", bytes[i]];
如果您有一个多字节字符,则会将其拆分为单独的ASCII字符(如您所见)。
从这段代码中不清楚bytes
究竟是什么。字符串是固定长度,还是字符串NULL终止?如果它是固定长度,那么你想要(假设这是UTF8):
self.metaDataString = [[NSString alloc] initWithBytes:bytes
length:kAQBufSize
encoding:NSUTF8StringEncoding];
如果这是一个以NULL结尾的UTF8字符串:
self.metaDataString = [NSString stringWithUTF8String:bytes];
如果使用其他编码(例如NSJapaneseEUCStringEncoding
或NSShiftJISStringEncoding
):
self.metaDataString = [NSString stringWithCString:bytes encoding:theEncoding];