ios - 带日文字符的 NSString

标签 ios iphone objective-c

在我的应用程序中,我有 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];

如果一些其他编码(例如 NSJapaneseEUCStringEncodingNSShiftJISStringEncoding):

self.metaDataString = [NSString stringWithCString:bytes encoding:theEncoding];

关于ios - 带日文字符的 NSString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190105/

相关文章:

iphone - 在现有项目中实现 CoreData (XCode 4.2)

iphone - 我们如何存储到 NSDictionary 中? NSDictionary 和 NSMutableDictionary 有什么区别?

objective-c - b/w addObject :dictionary and addObject:[dictionary copy] to an NSMutableArray? 有什么区别

ios - 操作无法完成com.facebook.sdk错误3-IOS-react-native-FBSDK

android - Worklight 音频播放和控制

iphone - UIView 触摸处理的奇怪问题

ios - 写入值后获取 plist 数据时出错

ios - 无法在 iOS 中播放来自 documentsDirectory 的视频

ios - Objective-C NSData 返回 nil

iphone - 从文件取消归档时 NSOrderedSet addObject 出现问题