【发布时间】:2011-12-13 18:37:59
【问题描述】:
我在这里和其他地方查看了许多其他帖子(见下文),但我仍然没有明确回答这个问题:windows wchar_t 如何处理基本多语言平面之外的 unicode 字符?
即:
- many programmers seem to feel that UTF-16 is harmful 因为它是可变长度代码。
- wchar_t is 16-bits wide on windows,但 32-bits wide on Unix/MacOS
- Windows API 使用宽字符,而不是 Unicode。
那么当您想编写类似 ???? 的代码时,Windows 会做什么? (U+2008A) Windows 上的汉字?
【问题讨论】:
-
Windows 使用 UCS2 作为编码。
-
我也是这么想的。但是,我刚刚在我的 Windows 计算机上成功编辑了一个文件名以包含 ???? (U+1D565) 数学双敲击小 T. (见programmers.stackexchange.com/questions/102205/…)。很明显,即使 Windows 使用的是 UCS-2,它也允许我在文件名中添加 SMP 字符。那么它是如何做到的呢?
-
根据Wikipedia,“NTFS 允许名称编码的任何 16 位值序列(文件名、流名、索引名等)。这意味着支持 UTF-16 代码点,但文件系统不检查序列是否是有效的 UTF-16(它允许任何短值序列,不限于 Unicode 标准中的那些)”。
-
@K-ballo:Windows 从 NT4 开始就没有使用 UCS-2。从 Windows2000 开始,现在一切都使用 UTF-16。
-
奇怪。我用这个词发现越来越多的问题。请随意建议标签同义词,但 Unicode 并没有提供一个单一的术语来涵盖所有其他平面,每个平面只有四个左右丑陋和笨拙的名称,到目前为止,没有人提出关于这些单独平面的问题。我确实在名称中考虑了一些想法,到目前为止,我认为它是最好的折衷方案。大多数人都使用“不在”、“超越”、“其他”等措辞与“bmp”或“基本多语言平面”一起使用,但这些似乎并没有导致伟大的标签名称......