Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 日本字符串_Ios_Iphone_Objective C - Fatal编程技术网

Ios 日本字符串

Ios 日本字符串,ios,iphone,objective-c,Ios,Iphone,Objective C,在我的应用程序中,我有从web获取字符串的NSString: 高瀬 - 虎柄の毘沙門天 现在我想把这个字符串复制到我的对象中的本地NSString,所以我写了: self.metaDataString = [NSString stringWithString:tempMetaDataString]; 现在在metaDataString中,我有: é«ç¬ - èæã®æ¯æ²é天 是什么造成了这个问题 我也试过: self.metaDataString = [NSString stri

在我的应用程序中,我有从web获取字符串的
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];