Windows server 2012 иероглифы вместо русского языка

Обновлено: 04.07.2024

Консольные приложения до сих пор остаются наиболее востребованным видом приложений, большинство разработчиков оттачивают архитектуру и бизнес-логику именно в консоли. При этом они нередко сталкиваются с проблемой локализации - русский текст, который вполне адекватно отражается в исходном файле, при выводе на консоль приобретает вид т.н. "кракозябр".

В целом, локализация консоли Windows при наличии соответствующего языкового пакета не представляется сложной. Тем не менее, полное и однозначное решение этой проблемы, в сущности, до сих пор не найдено. Причина этого, главным образом, кроется в самой природе консоли, которая, являясь компонентом системы, реализованным статическим классом System.Console, предоставляет свои методы приложению через системные программы-оболочки, такие как командная строка или командный процессор (cmd.exe), PowerShell, Terminal и другие.
По сути, консоль находится под двойным управлением - приложения и оболочки, что является потенциально конфликтной ситуацией, в первую очередь в части использования кодировок.

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

Виды консолей

В общем случае функции консоли таковы:

управление операционной системой и системным окружением приложений на основе применения стандартных системных устройств ввода-вывода (экран и клавиатура), использования команд операционной системы и/или собственно консоли;

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

Отдельным видом консоли можно считать консоль отладки Visual Studio (CMD-D ).

Конфликт кодировок

Полностью локализованная консоль в идеале должна поддерживать все мыслимые и немыслимые кодировки приложений, включая свои собственные команды и команды Windows, меняя "на лету" кодовые страницы потоков ввода и вывода. Задача нетривиальная, а иногда и невозможная - кодовые страницы DOS (CP437, CP866) плохо совмещаются с кодовыми страницами Windows и Unicode.

Совет 1. Выполнять разработку текстовых файлов (программных кодов, текстовых данных и др.) исключительно в кодировке UTF-8. Мир любит Юникод, а кроссплатформенность без него вообще невозможна.

Совет 2. Периодически проверять кодировку, например в текстовом редакторе Notepad++. Visual Studio может сбивать кодировку, особенно при редактировании за пределами VS.

Поскольку в консоли постоянно происходит передача управления от приложений к собственно командному процессору и обратно, регулярно возникает "конфликт кодировок", наглядно иллюстрируемый таблица 1 и 2, сформированных следующим образом:

Команды и код приложения под катом

> Echo ffffff фффффф // в командной строке

PS> Echo ffffff фффффф // в PowerShell

PS> Echo ffffff . // так выглядит та же команда в Windows PowerShell

код тестового приложения:

Командную часть задания все консоли локализовали практически без сбоев во всех кодировках, за исключением: в WPS неверно отображена русскоязычная часть команды во всех кодировках.

Табл. 1. Результат выполнения команды консоли Echo ffffff фффффф

Табл. 1. Результат выполнения команды консоли Echo ffffff фффффф

Вывод тестового приложения локализован лишь в 50% испытаний, как показано в табл.2.

Табл. 2. Результат запуска приложения LoggingConsole.Test

Табл. 2. Результат запуска приложения LoggingConsole.Test

Сoвет 3. Про PowerShell забываем раз и навсегда. Ну может не навсегда, а до следующей мажорной версии.

По умолчанию Windows устанавливает для консоли кодовые страницы DOS. Чаще всего CP437, иногда CP866. Актуальные версии командной строки cmd.exe способны локализовать приложения на основе русифицированной кодовой страницы 866, но не 437, отсюда и изначальный конфликт кодировок консоли и приложения. Поэтому

Совет 4. Перед запуском приложения необходимо проверить кодовую страницу консоли командой CHCP и ей же изменить кодировку на совместимую - 866, 1251, 65001.

Проблемы консолей Visual Studio

В Visual Studio имеется возможность подключения консолей, по умолчанию подключены командная строка для разработчика и Windows PowerShell для разработчика. К достоинствам можно отнести возможности определения собственных параметров консоли, отдельных от общесистемных, а также запуск консоли непосредственно в директории разработки. В остальном - это обычные стандартные консоли Windows, включая, как показано ранее, установленную кодовую страницу по умолчанию.

Отдельной опцией Visual Studio является встроенная односеансная консоль отладки, которая перехватывает команду Visual Studio на запуск приложения, запускается сама, ожидает компиляцию приложения, запускает его и отдает ему управление. Таким образом, отладочная консоль в течение всего рабочего сеанса находится под управлением приложения и возможность использования команд Windows или самой консоли, включая команду CHCP, не предусмотрена. Более того, отладочная консоль не воспринимает кодовую страницу по умолчанию, определенную в реестре, и всегда запускается в кодировке 437 или 866.

Совет 6. Тестирование приложения целесообразно выполнять во внешних консолях, более дружелюбных к локализации.

Анализ проблем консолей был бы не полон без ответа на вопрос - можно ли запустить консольное приложение без консоли? Можно - любой файл ".exe" запустится двойным кликом, и даже откроется окно приложения. Однако консольное приложение, по крайней мере однопоточное, по двойному клику запустится, но консольный режим не поддержит - все консольные вводы-выводы будут проигнорированы, и приложение завершится

Локализация отладочной консоли Visual Studio

Отладочная консоль - наиболее востребованная консоль разработчика, гораздо более удобная, чем внешняя консоль, поэтому резонно приложить максимум усилий для ее локализации.

На самом деле, правильнее говорить о локализации приложения в консоли - это важное уточнение. Microsoft по этому поводу высказывается недвусмысленно: "Programs that you start after you assign a new code page use the new code page. However, programs (except Cmd.exe) that you started before assigning the new code page will continue to use the original code page". Иными словами, консоль можно локализовать когда угодно и как угодно, но приложение будет локализовано в момент стабилизации взаимодействия с консолью в соответствии с текущей локализацией консоли, и эта локализация сохранится до завершения работы приложения. В связи с этим возникает вопрос - в какой момент окончательно устанавливается связь консоли и приложения?

Важно! Приложение окончательно стабилизирует взаимодействие с консолью в момент начала ввода-вывода в консоль, благодаря чему и появляется возможность программного управления локализацией приложения в консоли - до первого оператора ввода-вывода.

Ниже приведен пример вывода тестового приложения в консоль, иллюстрирующий изложенное. Метод Write получает номера текущих страниц, устанавливает новые кодовые страницы вводного и выводного потоков, выполняет чтение с консоли и записывает выводную строку, содержащий русский текст, в том числе считанный с консоли, обратно в консоль. Операция повторяется несколько раз для всех основных кодовых страниц, упомянутых ранее.

приложение запущено в консоли с кодовыми страницами 1251 (строка 2);

приложение меняет кодовые страницы консоли (current, setted);

приложение остановлено в консоли с кодовыми страницами 1252 (строка 11, setted);

по окончании работы приложения изменения консоли сохраняются (строка 14 - Active codepage 1252);

Приложение адекватно локализовано только в случае совпадения текущих кодовых страниц консоли (setted 1251:1251) с начальными кодовыми страницами (строки 8 и 10).

Совет 7. Обязательный и повторный! Функции SetConsoleCP должны размещаться в коде до первого оператора ввода-вывода в консоль.

Стратегия локализации приложения в консоли

Удалить приложение PowerShell (если установлено), сохранив Windows PowerShell;

Установить в качестве кодовую страницу консоли по умолчанию CP65001 (utf-8 Unicode) или CP1251 (Windows-1251-Cyr), см. совет 5;

Разработку приложений выполнять в кодировке utf-8 Unicode;

Контролировать кодировку файлов исходных кодов, текстовых файлов данных, например с помощью Notepad++;

Реализовать программное управление локализацией приложения в консоли, пример ниже под катом:

Как русифицировать Windows Server

После установки Windows Server на VDS нередко встречается, что интерфейс системы использует английский как основной язык, а русификация полностью отсутствует. Хоть английский и является неким стандартом в IT-сообществе, не всегда удобно использовать систему на иностранном языке. Для таких случаев в Windows предусмотрен специальный раздел, позволяющий загрузить и установить родной язык.

В сегодняшней статье мы поговорим о том, как можно добавить русский язык в Windows Server версий 2008, 2012, 2016 и 2019.

Алгоритм перевода системы на русский язык может немного различаться в зависимости от года выпуска WS: для версии 2008 потребуется загрузить дополнительный языковой пакет, в 2012-2019 перевод выполняется через системные настройки. Давайте детально рассмотрим, как выполнить русификацию интерфейса в каждой версии.

Как включить русский язык в Windows Server 2008

  1. Первым делом подключаемся к серверу одним из удобных способов и запускаем любой доступный браузер. В нем переходим на официальную страницу Microsoft и пролистываем вниз до заголовка «Пакеты многоязыкового интерфейса пользователя Windows Server 2008 R2 Service Pack 1». Выбираем нужный язык интерфейса и скачиваем его.
  2. Ожидаем, пока скачается файл для установки языкового пакета, запускаем его и следуем указаниям. В результате увидим следующее окно установки:
  3. После успешной установки новый язык будет добавлен в систему. Остается его активировать. Для этого переходим через меню «Пуск» в «Control panel» – там перемещаемся в «Region and Language», открываем вкладку «Keyboard and Languages» и в блоке «Choose a display language» выбираем «Русский».
  4. Перезагружаемся и проверяем активацию нового языкового пакета – весь интерфейс должен быть переведен на русский язык.

На этом русификация Windows Server 2008 завершена.

Русифицируем Windows Server 2012-2016

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

  1. Подключаемся к серверу через RDP, VNC или личный кабинет хостинг-провайдера. Заходим в ОС и открываем панель управления – сделать это можно через меню «Пуск».
  2. Находим блок «Clock, Language, and Region» и кликаем по кнопке «Add a language».
  3. В отобразившемся окне мы увидим только английский язык. Если же у вас уже установлен русский пакет, то можете сразу переходить к пункту «5». В противном случае нажимаем «Add a language».
  4. Выбираем нужный пакет и жмем в нижней части окна на кнопку «Add».
  5. Мы добавили русский пакет в Windows, далее потребуется его установить – для этого первым делом перейдем в дополнительные настройки языка.
  6. Выбираем «Download and install language pack».
  7. Ждем, пока завершится установка.
  8. Осталось назначить русский язык по умолчанию – сделать это можно в разделе «Option». Нажимаем в нем по кнопке «Make this primary language».
  9. Но это еще не все, необходимо изменить региональные настройки. Возвращаемся в панель управления и в блоке «Clock, Language, and Region» выбираем «Change date, time, or number formats».
  10. В отобразившемся окне заходим во вкладку «Formats» и указываем русский язык.
  11. Переходим в «Location» и ставим «Russia».
  12. В разделе «Administrative» кликаем по кнопке «Change system locale…» и также устанавливаем русский язык.
  13. В завершение нажимаем на «OK» в главном окне и перезагружаемся.
  14. Готово! Теперь интерфейс Windows Server 2012-2016 полностью переведен.

Таким образом можно добавить и установить новый языковой пакет в Windows Server 2012 и 2016 года.

Настраиваем язык в Windows Server 2019

Русификация системы 2019 года выполняется через настройки системы:

  1. Подключаемся к серверу удобным способом и переходим в меню «Пуск». После кликаем по кнопке в виде шестеренки.
  2. В отобразившемся окне переходим в раздел «Time & Language».
  3. Перемещаемся в подраздел «Language» и выбираем «Add a language».
  4. Находим нужный язык, выбираем его и жмем на кнопку «Next».
  5. Отмечаем все пункты и жмем «Install».
  6. После этого будет запущена автоматическая установка нового языка. В случае возникновения ошибки 0x00F0950 потребуется открыть раздел «Windows Update» и установить недостающие обновления. Сначала проверяем наличие новых обновлений с помощью кнопки «Check for updates», затем обновляемся.
  7. Пробуем повторно установить русский язык, если в первый раз не получилось. Далее в блоке «Windows display language» выбираем «Русский».
  8. Также в разделе «Region» установим необходимый язык и зайдем в другое место – «Additional date, time & regional settings».
  9. Откроем настройки региона.
  10. Переходим в подраздел «Administrative» и кликаем по кнопке «Change system locale…». Выбираем русский язык и сохраняем изменения.

После этого потребуется перезагрузить сервер, чтобы все изменения вступили в силу.

Надеюсь, что у вас не возникло проблем с русификацией Windows Server. Спасибо за внимание!

Как русифицировать Windows Server 2012 R2-01

Всем привет сегодня хочу рассказать, как изменить язык интерфейса системы Windows Server 2012 R2, на русский. Предположим вы как и я заказали на hetzner железный сервер, вместе с Windows Server 2012 R2, по умолчанию там устанавливается либо английский либо немецкий, я лично наоборот за английский, но есть у меня в компании люди, которые его на дух не переваривают, видимо просто не знают его, но они заказчики, так что уважим их и русифицируем сервер, установив пакет локализации и сделав для них привычную среду.

Установка пакета локализации Windows Server 2012 R2

Язык интерфейса — это язык, который используется Windows в диалоговых окнах, меню, разделах центра справки и поддержки, а также в других элементах пользовательского интерфейса. Вам не стоит беспокоиться о установленном языке в Windows 2012 R2, если он отличается от вашего родного, вы без труда сможете изменить язык интерфейса. Смотрим.

Щелкаем правым кликом по пуску и выбираем Control Panel

Как русифицировать Windows Server 2012 R2-02

Как русифицировать Windows Server 2012 R2-02

Щелкаем Ada a language

Как русифицировать Windows Server 2012 R2-03

Как русифицировать Windows Server 2012 R2-03

Видим, что у нас есть уже один язык это английский, для добавления русского щелкаем Add a language

Как русифицировать Windows Server 2012 R2-04

Как русифицировать Windows Server 2012 R2-04

В открывшемся окне выбираем русский язык и жмем add

Как русифицировать Windows Server 2012 R2-05

Как русифицировать Windows Server 2012 R2-05

начнется скачивание языкового пакета

Как русифицировать Windows Server 2012 R2-06

Как русифицировать Windows Server 2012 R2-06

Все установка language pack с русским языком окончена.

Как русифицировать Windows Server 2012 R2-07

Как русифицировать Windows Server 2012 R2-07

Теперь нужно применить наш language pack с русским языком, для того чтобы сменить интерфейс WIndows. Жмем Options

Как русифицировать Windows Server 2012 R2-08

Как русифицировать Windows Server 2012 R2-08

Выбираем Make this the primary language и save Для сохранения.

Как русифицировать Windows Server 2012 R2-09

Как русифицировать Windows Server 2012 R2-09

Вам сообщат что придется сделать выход из системы Log off жмем пока отмена.

Как русифицировать Windows Server 2012 R2-10

Как русифицировать Windows Server 2012 R2-10

Далее переходим в Advanced settings

Как русифицировать Windows Server 2012 R2-11

Как русифицировать Windows Server 2012 R2-11

и выбираем Применить языковые параметры к экрану приветствия, системным учетным записям и новым учетным записям пользователей (Apply language settings tj the welcome screen, system accounts, and new user accounts), выставляя везде русский язык.

Как русифицировать Windows Server 2012 R2-12

Как русифицировать Windows Server 2012 R2-12

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

Как русифицировать Windows Server 2012 R2-13

Как русифицировать Windows Server 2012 R2-13

Как русифицировать Windows Server 2012 R2-14

Как русифицировать Windows Server 2012 R2-14

Убеждаемся что на вкладки Форматы стоит русский язык

Как русифицировать Windows Server 2012 R2-15

Как русифицировать Windows Server 2012 R2-15

Переходим на вкладку Местоположение и видим, что стоит США, нас это не устраивает.

Как русифицировать Windows Server 2012 R2-16

Как русифицировать Windows Server 2012 R2-16

Как русифицировать Windows Server 2012 R2-17

Как русифицировать Windows Server 2012 R2-17

Переходим на вкладку Дополнительно. Видим, что текущий язык программ стоит США, нажимаем Изменить язык системы

Как русифицировать Windows Server 2012 R2-18

Как русифицировать Windows Server 2012 R2-18

Меняем Английский на русский.

Как русифицировать Windows Server 2012 R2-19

Как русифицировать Windows Server 2012 R2-19

Как русифицировать Windows Server 2012 R2-20

Как русифицировать Windows Server 2012 R2-20

Вас попросят перезагрузится жмем пока отмена, еще не время.

Как русифицировать Windows Server 2012 R2-21

Как русифицировать Windows Server 2012 R2-21

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

Как русифицировать Windows Server 2012 R2-22

Как русифицировать Windows Server 2012 R2-22

Локализация windows через language pack

Существую ситуации, когда у вас на вашем сервере может не оказаться доступа к интернету и первым методом вы не сможете воспользоваться. Примером могут служить закрытые локальные сети в интернет провайдерах или государственных учреждений. Для таких случаев можно воспользоваться вторым методом и произвести локализацию системы на русский язык с помощью, автономного языкового пакета "language pack".

Данный ISO образ имеет в себе кучу дополнительных языков в виде архивов lp. Вам необходимо скопировать ISO, на английскую систему и смонтировать его, через двойной клик по нему. Далее, что бы установить русский пакет локализации windows, вам необходимо открыть командную строку от имени администратора и запустить утилиту lpksetup.exe.

Запуск утилиты lpksetup.exe

У вас откроется окно утилиты lpksetup.exe (Install or uninstall display languages), у вас будет два пункта, установить или удалить языковой пакет. Выбираем первый пункт.

локализация windows lpksetup.exe

Нажимаем "Browse" и указываем путь до файла lp в папке ru-ru

Выбор language pack windows server 2012 r2

В итоге мы видим у нас выбран файл lp.cab, продолжаем локализовывать систему.

локализация windows lp.cab

Соглашаемся с лицензионным соглашением, выбирая пункт "i acceprt tje license terms"

лицензионное соглашение language pack

Начинается установка language pack windows server 2012 r2, по времени занимает минут пять.

Установка language pack

Затем заходим в панель управления, пункт "language" и добавляем русский язык.

дополнительные параметры языка

Добавляем русскую плитку.

добавление языка Windows Server 2012 r2

И не забываем произвести изменение дополнительных настроек и форматов даты, описанных в первом способе.Вот так вот просто русифицировать Windows Server 2012 R2 и изменить язык интерфейса системы на русский, у локализации вторым методом есть свои плюсы, вы можете сэкономить много времени и трафика.

Одна из возможных проблем, с которыми можно столкнуться после установки Windows 10 — кракозябры вместо русских букв в интерфейсе программ, а также в документах. Чаще неправильное отображение кириллицы встречается в изначально англоязычных и не совсем лицензионных версиях системы, но бывают и исключения.

Исправление отображения кириллицы с помощью настроек языка и региональных стандартов Windows 10

Кракозябры в программах и документах Windows 10

  1. Откройте панель управления (для этого можно начать набирать «Панель управления» или «Control Panel» в поиске на панели задач.
  2. Убедитесь, что в поле «Просмотр» (View by) установлено «Значки» (Icons) и выберите пункт «Региональные стандарты» (Region).
  3. На вкладке «Дополнительно» (Administrative) в разделе «Язык программ, не поддерживающих Юникод» (Language for non-Unicode programs) нажмите по кнопке «Изменить язык системы» (Change system locale).
  4. Выберите русский язык, нажмите «Ок» и подтвердите перезагрузку компьютера.

После перезагрузки проверьте, была ли решена проблема с отображением русских букв в интерфейсе программ и (или) документах — обычно, кракозябры бывают исправлены после этих простых действий.

Отображение кириллицы исправлено в Windows 10

С помощью редактора реестра

Первый способ — использовать редактор реестра. На мой взгляд, это самый щадящий для системы метод, тем не менее, рекомендую создать точку восстановления прежде чем начинать. Совет про точки восстановления относится и ко всем последующим способам в этом руководстве.

  1. Нажмите клавиши Win+R на клавиатуре, введите regedit и нажмите Enter, откроется редактор реестра.
  2. Перейдите к разделу реестраи в правой части пролистайте значения этого раздела до конца.
  3. Дважды нажмите по параметру ACP, установите значение 1251 (кодовая страница для кириллицы), нажмите Ок и закройте редактор реестра.
  4. Перезагрузите компьютер (именно перезагрузка, а не завершение работы и включение, в Windows 10 это может иметь значение).

Обычно, это исправляет проблему с отображением русских букв. Вариация способа с помощью редактора реестра (но менее предпочтительная) — посмотреть на текущее значение параметра ACP (обычно — 1252 для изначально англоязычных систем), затем в том же разделе реестра найти параметр с именем 1252 и изменить его значение с c_1252.nls на c_1251.nls.

Кодовые страницы в реестре Windows 10

Путем подмена файла кодовой страницы на c_1251.nls

Второй, не рекомендуемый мной способ, но иногда выбираемый теми, кто считает, что правка реестра — это слишком сложно или опасно: подмена файла кодовой страницы в C:\ Windows\ System32 (предполагается, что у вас установлена западно-европейская кодовая страница — 1252, обычно это так. Посмотреть текущую кодовую страницу можно в параметре ACP в реестре, как было описано в предыдущем способе).

После перезагрузки Windows 10 кириллица должна будет отображаться не в виде иероглифов, а как обычные русские буквы.

А вдруг и это будет интересно:

23.02.2020 в 12:33

Дмитрий, спасибо за полезную статью!
Объясните, пожалуйста, зачем вы вставляете пробелы в путях реестра? Это же жутко неудобно, когда хочешь скопировать путь и вставить в окно редактора реестра. К примеру, в статье указана ветка реестра HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\Control\ Nls\ CodePage, чтобы вставить и перейти по этому пути, надо предварительно удалить 3 пробела, иначе редактор реестра не опознает его.

23.02.2020 в 12:50

23.02.2020 в 12:56

Спасибо и с праздником вас!

23.02.2020 в 12:55

После изменения языка системы с английской US на русскую крякозябры в текстовых документах исчезли, но проблема частично сохранилась. До изменения языка системы интерфейс и настройки программы USDownloader были полностью в крякозябрах, после изменения стало получше, но проблема полностью еще не решена.
Подскажите, что еще можно сделать для решения моей проблемы?

24.02.2020 в 09:59

Подозреваю, что автор программы в тех элементах шрифт какой-то использует, который у вас тоже есть, но без наличия кириллических символов. Можно попробовать вообще с разработчиком списаться на тему (вроде там частное лицо, должно идти на контакт).

Читайте также: