首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示或转换(非标准) \U0099商标"TM“字符?

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

Stack Overflow用户
提问于 2015-02-11 11:46:25
回答 3查看 1.6K关注 0票数 1

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

出现问题的"TM“字符是\U0099,而不是通常的\U2122

我再深入一点,发现"TM“字符\U0099属于很少的中文字体。

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

我尝试在我的数据中扫描"\U0099“并将其字符串替换为\U2122,但似乎NSString函数将自动转义unicode字符,因此这个"TM”字符甚至不在那里。

是否有人以前遇到过此问题,或者可以就如何处理此\U0099字符给我建议?

提前感谢

EN

回答 3

Stack Overflow用户

发布于 2015-02-12 02:29:10

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

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

然而,从UTF-16开始,我确实成功地创建了一个包含U+0099的字符串:

代码语言:javascript
复制
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

代码语言:javascript
复制
unichar notTMChar = 0x99;
NSString *notTMStr = [[NSString alloc] initWithBytes:&notTMChar length:2 encoding:NSUTF16LittleEndianStringEncoding];

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

代码语言:javascript
复制
NSString *t = [s stringByReplacingOccurrencesOfString:notTMStr withString:@"™"];

根据需要给t赋值"abc™def“。

警告:我们正在处理一个未分配的Unicode控制字符。Clang/Cocoa在UTF-8中拒绝了它,它在UTF-16中接受它可能是无意的。使用C库函数来做这件事可能更可靠。Xcode5.1.1和Clang5.1用于测试。

HTH

票数 1
EN

Stack Overflow用户

发布于 2015-02-12 11:57:48

谢谢你的建议。

我已经和我的客户谈过了,他们同意\u0099不应该在那里。

我还实现了rmaddy的建议,将instance \u0099替换为\u2122。

代码语言:javascript
复制
    NSString *problemString = dictionaryWithU099AsValue.description;
    if ([problemString rangeOfString:@"0099"].location != NSNotFound) {
        NSString *fixedDescriptionString = [[[problemString stringByReplacingOccurrencesOfString:@"U0099" withString:@"U2122"];

    // Then I reconstruct the NSString back to a new NSDictionary
    }
票数 0
EN

Stack Overflow用户

发布于 2022-01-21 22:16:59

请注意,商标符号在Code Page 1252 (一种常见的™字符集)中显示为十六进制99。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28446264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档