gpt4 book ai didi

ios - 商标 "TM"字符如何显示或转换(非标准)\U0099?

转载 作者:行者123 更新时间:2023-11-29 12:28:14 28 4
gpt4 key购买 nike

我在 UILabel 上显示商标“TM”字符时遇到了一些问题。

出现问题的“TM”字符是\U0099 而不是通常的\U2122
稍微深挖一下,发现“TM”字\U0099属于极少数的汉字。

所以我猜 iOS 没有在标签中显示它的字体,或者根本无法识别它。

我试图扫描我的数据以查找“\U0099”并将其替换为\U2122,但似乎 NSString 函数会自动转义 unicode 字符,因此这个“TM”字符甚至不会出现。

有没有人以前遇到过这个问题或者可以给我建议如何处理这个\U0099 字符?

提前致谢

最佳答案

我不清楚您是如何获得 NSString 的,也不清楚您实际尝试过什么来解决您的问题。所以这个建议可能完全不合适,但让我们看看它是否有帮助......

U+0099 是未分配的 Unicode 控制字符,它不是 TM 符号。如果将转义符放入文字中,则很难将此字符放入 NSString 作为 Clang 至少对象,并且 Cocoa 无法将 UTF-8 中的字节序列转换为 NSString 如果它包含它。这个问题可能是您无法用字符串替换它的评论背后的原因。

但是从 UTF-16 开始,我确实设法创建了一个包含 U+0099 的字符串:

unichar b[] = { 0x61, 0x62, 0x63, 0x99, 0x64, 0x65, 0x66 };
NSString *s = [[NSString alloc] initWithBytes:b length:14 encoding:NSUTF16LittleEndianStringEncoding];

那是字符串“abc\U0099def”(调用 characterAtIndex:3 会显示这个)。

使用相同的方法可以生成一个只有 U+0099 的 NSString:

unichar notTMChar = 0x99;
NSString *notTMStr = [[NSString alloc] initWithBytes:&notTMChar length:2 encoding:NSUTF16LittleEndianStringEncoding];

并且可以在字符串替换调用中使用:

NSString *t = [s stringByReplacingOccurrencesOfString:notTMStr withString:@"™"];

根据需要为 t 赋予值“abc™def”。

警告:我们在这里处理一个未分配的 Unicode 控制字符。 Clang/Cocoa 在 UTF-8 中拒绝了它,它在 UTF-16 中接受它可能是无意的。使用 C 库函数来执行此操作可能更可靠。使用带有 Clang 5.1 的 Xcode 5.1.1 进行测试。

HTH

关于ios - 商标 "TM"字符如何显示或转换(非标准)\U0099?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28446264/

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