如何将我的字节数组转换为处理瑞典字母åäö?
的字符串我现在这样做: NSString * hexString = [NSString stringWithFormat:@“%c”,resData [i]];
(resData包含ascii字符) 但是当我在输出标签中使用hexString时,我得到了所有非英语字符的乱码。 如何将选定的字节设置为处理瑞典字符的编码?
此致 丹尼尔
答案 0 :(得分:2)
我从 NSString 引用中得到它:
- (id)initWithBytes:(const void *)bytes length:(NSUInteger)length encoding:(NSStringEncoding)encoding
所以你应该这样做
[[NSString alloc] initWithBytes:resData
length:yourLength
encoding:NSUTF8StringEncoding]
答案 1 :(得分:2)
resData
不包含ASCII字符,因为ASCII不包含å,ä和ö的字符。如果resData
是UTF-8编码的字符串,则使用多个字节对某些字符(包括这些字符)进行编码。
看起来你想要一种打印* n * th字符的方法。首先,按照@Jack的说法将这些字节转换为NSString
:
/* Assuming |resData| is NULL-terminated and UTF-8 encoded... */
NSString *text = [NSString stringWithUTF8String:resData];
现在,要打印text
的第*个字符:
NSUInteger n = 3;
NSString *character = [text substringWithRange:NSMakeRange(n, 1)];
NSLog(@"character #%d: %@", n, character);
您还可以将character
设置为控件的字符串值。它应该显示得很好。
关键外卖:byte[i]
不一定与* i * th字符相同。文本总是被编码,你必须始终(痛苦地)意识到这一点。