Objective c 字节数组到utf8字符串

Objective c 字节数组到utf8字符串,objective-c,string,ascii,byte,Objective C,String,Ascii,Byte,如何将字节数组转换为处理瑞典语字母åäö的字符串 我现在这样做: NSString*hexString=[NSString stringWithFormat:@%c,resData[i]] resData包含ascii字符 但是当我在输出标签中使用hextstring时,我得到了所有非英语字符的jibberish。 如何将选定的字节转换为处理瑞典字符的编码 问候 丹尼尔,我不明白。。从NSString参考中,您有: - (id)initWithBytes:(const void *)bytes

如何将字节数组转换为处理瑞典语字母åäö的字符串

我现在这样做: NSString*hexString=[NSString stringWithFormat:@%c,resData[i]]

resData包含ascii字符 但是当我在输出标签中使用hextstring时,我得到了所有非英语字符的jibberish。 如何将选定的字节转换为处理瑞典字符的编码

问候 丹尼尔,我不明白。。从NSString参考中,您有:

- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
所以你应该这么做

[[NSString alloc] initWithBytes:resData 
                  length:yourLength
                  encoding:NSUTF8StringEncoding]
我不明白。。从NSString参考中,您有:

- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
所以你应该这么做

[[NSString alloc] initWithBytes:resData 
                  length:yourLength
                  encoding:NSUTF8StringEncoding]
resData不包含ASCII字符,因为ASCII不包含å、ä和ö的字符。如果resData是UTF-8编码的字符串,那么包括这些字符在内的一些字符将使用多个字节进行编码

看起来您需要一种打印第n个字符的方法。首先,按照@Jack所说的做,并将这些字节转换为NSString:

现在,要打印文本的第*n*个字符:

还可以将字符设置为控件的字符串值。它应该显示得很好

密钥take-away:byte[i]不一定与*i*th字符相同。文本总是经过编码的,您必须始终痛苦地意识到这一点。

resData不包含ASCII字符,因为ASCII不包含å、ä和ö的字符。如果resData是UTF-8编码的字符串,那么包括这些字符在内的一些字符将使用多个字节进行编码

看起来您需要一种打印第n个字符的方法。首先,按照@Jack所说的做,并将这些字节转换为NSString:

现在,要打印文本的第*n*个字符:

还可以将字符设置为控件的字符串值。它应该显示得很好


密钥take-away:byte[i]不一定与*i*th字符相同。文本总是经过编码的,您必须始终痛苦地意识到这一点。

但如果我这样做,如何获得特定的数据?我知道整个resData数组的长度。例如,我想获取resData[I]并将其显示为字符串。你的意思是只转换一个字符吗?那不行。如果数组是字节数组,那么许多字节将表示UTF8中的单个字符。您应该首先将整个数组转换为字符串,然后提取单个字符。。UTF8具有可变大小的字符,因此仅获取第i个字符是行不通的,但如果一个字节表示一个字符,那么它就是我需要的字符,并希望使其不具有jibberischy。需要取一个特定的字节,并将其转换为utf8或任何可以显示åäö的内容,例如,angstrom在utf8中有U+00C5编码,这是2个字节,而不仅仅是一个字节。你不能仅仅从每个字节读取一个字节就得到它。但是如果我这样做,我如何得到一个特定的数据呢?我知道整个resData数组的长度。例如,我想获取resData[I]并将其显示为字符串。你的意思是只转换一个字符吗?那不行。如果数组是字节数组,那么许多字节将表示UTF8中的单个字符。您应该首先将整个数组转换为字符串,然后提取单个字符。。UTF8具有可变大小的字符,因此仅获取第i个字符是行不通的,但如果一个字节表示一个字符,那么它就是我需要的字符,并希望使其不具有jibberischy。需要取一个特定的字节,并将其转换为utf8或任何可以显示åäö的内容,例如,angstrom在utf8中有U+00C5编码,这是2个字节,而不仅仅是一个字节。你不能仅仅从每个字节读取一个字节就得到它。