这应该很容易找到,但我似乎无法在任何地方找到它 - 所以请原谅,如果它没有脑子。什么是CFString,UTF-16,UTF-8等中使用的本机UTF存储。
为什么我要问的是我是否正在连接某些lua代码并且lua可以处理UTF-8字符串但是如果我将它们转换为CFSTring,那么如果它在内部使用UTF-16会有性能损失吗? / p>
我查看了CFStringGetSystemEncoding并返回mac roman - 这似乎不正确。
locale返回
LANG = “en_AU.UTF-8” ...
表示它是utf-8但是docs似乎表明它是16位?
TIA
答案 0 :(得分:1)
文档中有简短的章节“String storage”,说它可以在内部进行各种编码:
虽然概念上CFString对象将字符串存储为Unicode字符数组,但实际上它们通常会更有效地存储它们。 CFString对象表示字符串所需的内存通常小于简单的UniChar数组所需的内存。
最后一段为那些担心额外转换的人提供了解决方案:
您可以使用CFStringCreateMutableWithExternalCharactersNoCopy函数进一步控制字符串的后备存储。此函数创建对可变CFString对象的引用,但允许您保留包含对象字符的Unicode缓冲区的完全所有权;对象本身指向缓冲区作为其后备存储。