我有一个国际字符存储在一个unichar变量中。这个字符不是来自文件或URL。该变量本身仅存储一个无符号短整型数(0xce91),它是以UTF-8格式编码的并且可以被转换为希腊大写字母'A'。我试图将该字符放入一个NSString变量中,但一直失败。
我尝试了两种不同的方法,都没有成功:
unichar greekAlpha = 0xce91; //could have written greekAlpha = 'Α' instead.
NSString *theString = [NSString stringWithFormat:@"Greek Alpha: %C", greekAlpha];
不好,我得到了一些奇怪的中文字符。顺便说一下,这对英文字符完美地适用。
然后我也尝试了这个:
NSString *byteString = [[NSString alloc] initWithBytes:&greekAlpha
length:sizeof(unichar)
encoding:NSUTF8StringEncoding];
但是这也不起作用。 显然,我做错了什么,但我不知道是什么。 有人可以帮我吗? 谢谢!
unichar
是正确的数据类型吗?将 UTF-8 数据存储在旨在用于 UTF-16 的类型中似乎不太对。正如 Jon Jardine 所指出的,有些 UTF-8 字符超过了 16 位... 你能否也为单个字符使用NSString
(NSString greekAlpha = @"Α"
),然后在stringWithFormat
中使用%@
? - David Gelhar