Широкий символ Windows - PullRequest
       18

Широкий символ Windows

4 голосов
/ 04 декабря 2011

Windows определяет символ wchar_t длиной 16 бит. Однако используемое кодирование UTF-16 говорит нам, что некоторые символы могут фактически кодироваться 4 байтами (32 бита).

Означает ли это, что если я разрабатываю приложение для Windows, следующее утверждение:

wchar_t symbol = ... // Whatever

может представлять только часть фактического символа?


А что будет, если я сделаю то же самое в *nix, где wchar_t имеет длину 32 бита?

1 Ответ

7 голосов
/ 04 декабря 2011

Да, это означает, что symbol может содержать часть суррогатной пары в Windows.Вкл. *nixes wchar_t имеет длину 32 бита и будет содержать весь набор символов Юникода.Обратите внимание, что кодовая точка Unicode не представляет символ, поскольку некоторые символы могут кодироваться более чем одной кодовой точкой Unicode, поэтому подсчет символов вообще не имеет смысла.В частности, это подразумевает, что не имеет смысла использовать что-либо кроме строк UTF-8 в узких символах в любом месте вне библиотек Unicode, даже в Windows.

Чтение этого старого потока дляподробности.

...