Установка кодовой страницы 1252 в Windows 11 по-прежнему получает cp 850 в терминалах
На устройстве с Windows 11 в международных настройках (запущен «intl.cpl») установлено значение «Итальянский» для приложений, не поддерживающих Юникод. В результате такие приложения, как WinMerge, угадывают кодовую страницу 1252 , что выглядит нормально с точки зрения Западной Европы. То же самое справедливо и для WordPad.
Однако любое терминальное приложение, которое я запускаю (Windows Terminal, cmd.exe, TCC/LE), по-прежнему запускается с cp 850 (DOS Multilingual Latin I), который отличается для букв с диакритическими знаками.
Кроме того, я все еще могуCHCP 1252
в каждой консоли, но разве это не странное поведение?
РЕДАКТИРОВАТЬ: Чтобы добавить больше удовольствия, если я запускаю из cmd.exe или TCC/LEbash
буквы с диакритическими знаками кажутся правильными , но когда я возвращаюсь к предыдущему командному процессору, я обнаруживаю, что кодовая страница была переключена на cp 858 (которая в любом случае не имеет акцентированных букв 1252)...
1 ответ
Нет, так всегда было с консолью Windows, поскольку до эры NT она буквально была «виртуализированным окном MS-DOS».
Подобно приложениям с графическим интерфейсом, консоль в Windows NT имеет отдельный набор API-интерфейсов на основе wchar_t , которые программы могут использовать для прямого вывода текста в Юникоде без какого-либо преобразования кодовой страницы.
(В качестве альтернативы в Windows 10 и более поздних версиях включение опции использования UTF-8 (65001) в качестве кодовой страницы «ANSI» для нешироких API также приведет к выбору UTF-8 в качестве кодовой страницы консоли «OEM».)