gpt4 book ai didi

objective-c - 为什么相同的 Unicode 字符具有不同的整数值,反之亦然?

转载 作者:行者123 更新时间:2023-12-04 06:38:55 25 4
gpt4 key购买 nike

我试图在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com