gpt4 book ai didi

ios - NSString stringWithCString不显示特殊字符吗?

转载 作者:行者123 更新时间:2023-12-01 19:59:45 25 4
gpt4 key购买 nike

我正在使用

[NSString stringWithFormat:@"%C",(unichar)decimalValueX];

但是我不得不叫它数千次,而且太慢了。

作为替代,我尝试了这个:
sprintf (cString, "%C", (unichar)decimalValueX);
[NSString stringWithCString:cString encoding:NSUTF16StringEncoding];

但没有正确翻译字符。

如果我尝试使用UTF8而不是16:
sprintf (cString, "%C", (unichar)decimalValueX);
[NSString stringWithCString:cString encoding:NSUTF8StringEncoding];

我得到字母数字,但没有外来字符或其他特殊字符。

谁能解释发生了什么事?还是如何使stringWithFormat更快?

谢谢!

最佳答案

看来%C格式不适用于sprintf和相关功能以及非ASCII字符。但是有一个更简单的方法:
stringWithCharacters:length:
直接从NSString数组(UTF-16代码点)创建unichar
对于一个unichar,这仅仅是

NSString *string = [NSString stringWithCharacters:&decimalValueX length:1];

例:
unichar decimalValueX = 8364; // The Euro character
NSString *string = [NSString stringWithCharacters:&decimalValueX length:1];
NSLog(@"%@", string); // €

多个UTF-16代码点的示例:
unichar utf16[] = { 945, 946, 947 };
NSString *string3 = [NSString stringWithCharacters:utf16 length:3];
NSLog(@"%@", string3); // αβγ

对于“基本多语言平面”之外的字符(即
字符> U + FFFF),则必须使用2个UTF-16代码点
每个字符(代理对)。
或使用其他类似的API
uint32_t utf32[] = { 128123, 128121 };
NSString *string4 = [[NSString alloc] initWithBytes:utf32 length:2*4 encoding:NSUTF32LittleEndianStringEncoding];
NSLog(@"%@", string4); // 👻👹

关于ios - NSString stringWithCString不显示特殊字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40430420/

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