Ios 日本字符串
在我的应用程序中,我有从web获取字符串的Ios 日本字符串,ios,iphone,objective-c,Ios,Iphone,Objective C,在我的应用程序中,我有从web获取字符串的NSString: 高瀬 - 虎柄の毘沙門天 现在我想把这个字符串复制到我的对象中的本地NSString,所以我写了: self.metaDataString = [NSString stringWithString:tempMetaDataString]; 现在在metaDataString中,我有: é«ç¬ - èæã®æ¯æ²é天 是什么造成了这个问题 我也试过: self.metaDataString = [NSString stri
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]];
self.metaDataString = [NSString stringWithCString:bytes encoding:theEncoding];
这是字节数组:
UInt8 bytes[kAQBufSize];
length = CFReadStreamRead(stream, bytes, kAQBufSize);
此行不能用于多字节字符:
[tempMetaDataString appendFormat:@"%c", bytes[i]];
如果您有一个多字节字符,这将把它分割成单独的ASCII字符(如您所见)
从这段代码中不清楚什么是字节
。字符串是固定长度的,还是以NULL结尾?如果它是固定长度的,那么您需要(假设它是UTF8):
如果这是以NULL结尾的UTF8字符串:
self.metaDataString = [NSString stringWithUTF8String:bytes];
如果某些其他编码(例如NSJapaneseEUCStringEncoding
或NSShiftJISStringEncoding
):
首先,您如何获得
tempMetaDataString
?它不是已经是一个NSString了吗?你是如何打印出é«ç-èèèèèèèèèèèèè
?这几乎肯定是错误的。您需要知道HTTP响应的编码,并使用诸如stringWithUTF8String
或stringWithCString:encoding
之类的方法来正确转换它。我建议不要逐字节追加它。我可能会用[[NSString alloc]initWithBytes:length:encoding:][/code>来代替,我有一种预感,它们可能是Shift-JIS而不是UTF-8,但我不确定。我每天都处理日语字符。我的建议是:找出原始的编码方法。如果你不明白我的意思,那么用EUC-JP或Shift JIS将相同的日文字符序列保存在一个文件中。然后尝试用UTF-8打开该文件,看看会发生什么。我只能说这些了。
self.metaDataString = [NSString stringWithCString:bytes encoding:theEncoding];