Когда вводится код Unicode, это UTF-8 / UTF-16 или как? - PullRequest
0 голосов
/ 02 ноября 2011

Использование windows (XP для аргументации), когда у вас есть иностранный язык, например арабский, и они набирают клавишу на клавиатуре, и у вас есть редактор, который сохраняет этот код в строке, а затем кодируется ли он как UTF-8 / UTF-16 и т. д.?

Почему я спрашиваю, что я смотрю, как получить строки юникода в сценарий lua. Lua может хранить utf-8 в строке. Итак, как выполняется кодирование - в клавиатуре / драйвере до того, как оно попадет в ide или ide.

Пожалуйста, прости за неопределенность вопроса. Если у меня есть строка в кодировке Unicode, то все ясно, что кодирование происходит именно в этом, я не уверен, особенно с клавиатурами не на американском и английском, а у меня только клавиатура на американском и английском языках.

ТИА

Ответы [ 2 ]

5 голосов
/ 02 ноября 2011

Клавиатура не имеет к этому никакого отношения. Например, вы можете ввести японский с клавиатуры США. Клавиатура просто отправляет коды клавиш в ОС. ОС интерпретирует эти коды клавиш в зависимости от того, какая раскладка клавиатуры выбрана. Он может просто превратить эти коды в символы на экране (какой символ зависит от выбранной вами раскладки клавиатуры) или может вызвать IME для ввода сложных языков, который, в свою очередь, выдает некоторые символы на экране. Скорее всего, эти персонажи обрабатываются в UTF-16 за кулисами, но это не должно вас беспокоить. Если вы печатаете в текстовом редакторе, вы можете, наконец, указать, какую кодировку вы хотите сохранить в файле . Это будет окончательная кодировка для файлов исходного кода.

3 голосов
/ 02 ноября 2011

Windows отправляет сообщение WM_CHAR, чтобы сообщить вам, что была нажата клавиша ввода. Статья Библиотеки MSDN о ней предельно ясна:

В сообщении WM_CHAR используется формат преобразования Unicode (UTF) -16.

Если вам нужно, чтобы оно было закодировано в utf8, вам нужно будет перевести его. Используйте WideCharToMultiByte () с аргументом CodePage, установленным в CP_UTF8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...