假设我有 MUSICAL SYMBOL G CLEF
符号:** 𝄞 ** 我希望在我的 Objective-C 源文件中的字符串文字中。
OS X Character Viewer 表示 CLEF 在他们的术语中是 UTF8 F0 9D 84 9E
和 Unicode 1D11E(D834+DD1E)
。
经过一番摸索,并使用 t he ICU UNICODE Demonstration页面,我确实得到了以下代码:
NSString *uni=@"\U0001d11e";
NSString *uni2=[[NSString alloc] initWithUTF8String:"\xF0\x9D\x84\x9E"];
NSString *uni3=@"𝄞";
NSLog(@"unicode: %@ and %@ and %@",uni, uni2, uni3);
我的问题:
- 是否可以简化我处理 UTF-8 文字的方式?这对我来说似乎很笨拙。
@"\U0001d11e
部分是 UTF-32 吗?- 为什么从 Character Viewer 中剪切和粘贴 CLEF 确实有效?我以为 Objective-C 文件必须是 UTF-8?
最佳答案
- 我更喜欢你在
uni3
中做的方式,但遗憾的是那是 not recommended .如果做不到这一点,我更喜欢uni
中的方法而不是uni2
中的方法。另一种选择是[NSString stringWithFormat:@"%C", 0x1d11e]
。 - 它是一个“通用字符名称”,在 C99(第 6.4.3 节)中引入,并从 OS X 10.5 开始导入到 Objective-C 中。从技术上讲,这不一定要为您提供 UTF-8(这取决于编译器),但实际上您可能会得到 UTF-8。
- 源代码文件的编码可能是 UTF-8,符合运行时的预期,因此一切正常。源文件也可能是 UTF-16 或 UTF-32,并且编译器在编译它时正在做正确的事情。尽管如此,Apple 并不推荐这样做。
关于objective-c - Xcode UTF-8 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5690172/