我目前正在探索Digital Mars D语言的规范,并且在理解原始字符类型的完整性质时遇到了一些麻烦。《Learn to Tango With D 》一书同样模糊了该语言在该领域的能力和局限性。
网站上给出的类型如下:
字符;// 未签名的 8 位 UTF-8 wchar; // 无符号 16 位 UTF-16 字符;// 无符号 32 位 UTF-32
由于我们知道大多数 Unicode 转换 (UTF) 格式编码表示具有可变位宽的字符,这是否意味着 D 中的 char 只能包含适合 8 位的值,或者它是否在机器的给它双字节字符时的物理内存?也许还有其他一些可能性,比如在重载变量时自动转换为下一个最合适的类型?
例如,我想在编辑器中使用 UTF-8 字符并输入 Chinese 。它会简单地摔倒,还是能够更“正确”地处理 Unicode 字符,就像在 C# 中一样?是否仍然需要提供胶水代码以允许使用 Unicode 支持的任何语言?
我希望您能提供有关这些类型如何在幕后工作的任何具体信息,以及有关处理其局限性的任何一般最佳实践建议。