我正在尝试在 xcode 中读取一个包含 Unicode 字符字符串的文件。我的代码将遍历字符串,一个接一个地拾取字符并打印其相应的 int 值。 下面是读取其中一小块的代码。
NSString *theText = @"˘¸";
for(int i=0; i<[theText length]; i++) {
int k= 249+(i*3);
NSLog(@"%c and %C >> UNICODE DEC-VAL >> %d",[theText characterAtIndex:i],[theText characterAtIndex:i],[theText characterAtIndex:i]);
NSLog(@"%c and %C >> UNICODE DEC-VAL >> %d",k,k,k);
}
其结果是:
ÿ and ˘ >> UNICODE DEC-VAL >> 728
˘ and ù >> UNICODE DEC-VAL >> 249
∏ and ¸ >> UNICODE DEC-VAL >> 184
¸ and ü >> UNICODE DEC-VAL >> 252
很明显,存在歧义,对于相同的整数值字符,根据格式说明符的不同而有所不同,并且对于相同的 unicode 字符,它们的整数值也不同。
我只是想知道为什么会这样?
谢谢。
最佳答案
%c
格式说明符需要一个字节 (char
) 值。您传递的整数较大,因此会导致未定义的行为。除此之外,看起来您正在使用一些旧的 8 位代码页区域设置,而不是 UTF-8,因此 8 位字节具有与 Unicode 不匹配的字符的单独标识。简而言之,你有很多东西坏了。
关于objective-c - 为什么相同的 Unicode 字符具有不同的整数值,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4516999/