我在這裏和其他地方看過很多其他帖子(見下文),但我仍然沒有明確的答案:Windows wchar_t如何處理基本多語言平面之外的unicode字符?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想要在Windows上編碼(U + 2008A)Han字符時,Windows會做什麼?
Windows使用UCS2作爲編碼。 –
這就是我的想法。但是,我只是成功地在我的Windows計算機上編輯了一個文件名,以包含(U + 1D565)數學雙重打擊小T(請參閱http://programmers.stackexchange.com/questions/102205/should-utf-16-be -considered有害)。很顯然,即使Windows使用UCS-2,它也允許我將SMP字符放在文件名中。那麼它是如何做到的? – vy32
根據[Wikipedia](http://en.wikipedia.org/wiki/NTFS#Internals),「NTFS允許任何16位值序列用於名稱編碼(文件名,流名稱,索引名稱等) 。這意味着支持UTF-16代碼點,但是文件系統不檢查序列是否是有效的UTF-16(它允許任何序列的短值,不限於Unicode標準中的那些)「。 –