Spojrzałem na wiele innych postów tutaj i gdzie indziej (patrz poniżej), ale nadal nie mam jednoznacznej odpowiedzi na to pytanie: w jaki sposób Windows wchar_t obsługuje znaki Unicode poza podstawową płaszczyzną wielojęzyczną?jak Windows wchar_t obsługuje znaki Unicode poza podstawową płaszczyzną wielojęzyczną?
Czyli:
- many programmers seem to feel that UTF-16 is harmful ponieważ jest to kod o zmiennej długości.
- wchar_t is 16-bits wide on windows, ale 32-bits wide on Unix/MacOS
- Interfejsy API systemu Windows używają szerokich znaków, a nie kodu Unicode.
Co robi system Windows, gdy chce się napisać coś w stylu (U + 2008A) Han w systemie Windows?
System Windows używa UCS2 jako kodowania. –
Tak też myślałem. Jednak po prostu z powodzeniem zmieniłem nazwę pliku na moim komputerze z systemem Windows, aby zawierało (U + 1D565) MATEMATYCZNĄ PODWÓJNĄ STRUKTĘ MAŁĄ T. (patrz: http://programmers.stackexchange.com/questions/102205/should-utf-16-be -przeczytane - szkodliwe). Tak więc, nawet jeśli system Windows używa UCS-2, pozwala mi umieścić znak SMP w nazwie pliku. Jak to działa? – vy32
Według [Wikipedia] (http://en.wikipedia.org/wiki/NTFS#Internals), "NTFS zezwala na dowolną sekwencję 16-bitowych wartości dla kodowania nazw (nazwy plików, nazwy strumieni, nazwy indeksów itp.) Oznacza to, że obsługiwane są codepointy UTF-16, ale system plików nie sprawdza, czy sekwencja jest poprawna UTF-16 (pozwala na dowolną sekwencję krótkich wartości, nie ograniczoną do tych w standardzie Unicode) ". –