在我的应用程序中,我有 NSString
从网络获取字符串:
高瀬 - 虎柄の毘沙門天
现在我想将这个字符串复制到我的对象中的本地 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);
最佳答案
此行不适用于多字节字符:
[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];
关于ios - 带日文字符的 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190105/