Кодовая страница windows умолчанию

Кодировки в Windows

В данной статье пойдёт речь о кодировках в Windows. Все в жизни хоть раз использовали и писали консольные приложения как таковые. Нету разницы для какой причины. Будь-то выбивание процесса или же просто написать «Привет. Я не могу сделать кодировку нормальной, поэтому я смотрю эту статью!».

Тем, кто ещё не понимает, о чём проблема, то вот Вам:

А тут было написано:

Но никто ничего не понял.

В любом случае в Windows до 10 кодировка BAT и других языков, не использует кодировку поддерживающую Ваш язык, поэтому все русские символы будут писаться неправильно.

1. Настройка консоли в батнике

Сразу для тех, кто пишет chcp 1251 лучше написать это:

Первый способ устранения проблемы, это Notepad++. Для этого Вам нужно открыть Ваш батник таким способом:

Не бойтесь, у Вас откроется код Вашего батника, а затем Вам нужно будет сделать следующие действия:

Если Вам ничего не помогло, то преобразуйте в UTF-8 без BOM.

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

Первый способ непосредственно Notepad++, но а если нужно сначала одну кодировку, а потом другую?

Сразу для использующих chcp 1251 пишите это:

Второй способ это написать десктопную программу, или же использовать Visual Studio. Если же не помогает, то есть первое: изменение кодировки вывода(Пример на C++).

Если же не сработает:

3. Изменение chcp 1251
Если же у Вас батник, то напишите в начало:

Теперь у Нас будет нормальный вывод в консоль. На других языках (С++):

4. Сделать жизнь мёдом
При использовании данного способа Вы не сможете:

  • Разрабатывать приложения на Windows ниже 10
  • Спасти мир от данной проблемы
  • Думать о других людях
  • Разрабатывать десктопные приложения, так как Вам жизнь покажется мёдом
  • Сменить Windows на версию ниже 10
  • Ну и понимать людей, у которых Windows ниже 10

Установить Windows 10. Там кодировка консоли специально подходит для языка страны, и Вам больше не нужно будет беспокоиться об этой проблеме. Но у Вас появится ещё 6 проблем, и вернуться к предыдущей лицензионной версии Windows Вы не сможете.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Использование кодовой страницы UTF-8 Use the UTF-8 code page

Используйте кодировку UTF-8 для обеспечения оптимальной совместимости между веб-приложениями и другими * платформами на основе nix (UNIX, Linux и разновидности), свести к сведению ошибки локализации и снизить затраты на тестирование. Use UTF-8 character encoding for optimal compatibility between web apps and other *nix-based platforms (Unix, Linux, and variants), minimize localization bugs, and reduce testing overhead.

UTF-8 — это универсальная кодовая страница для интернационализации и способная кодировать весь набор символов Юникода. UTF-8 is the universal code page for internationalization and is able to encode the entire Unicode character set. Он используется в Интернете по умолчанию, а также на платформах на основе NIX. It is used pervasively on the web, and is the default for *nix-based platforms.

Закодированный символ занимает от 1 до 4 байт. An encoded character takes between 1 and 4 bytes. Кодировка UTF-8 поддерживает более длинные последовательности байтов (до 6 байт), но большая кодовая точка Юникода 6,0 (U + 10FFFF) занимает всего 4 байта. UTF-8 encoding supports longer byte sequences, up to 6 bytes, but the biggest code point of Unicode 6.0 (U+10FFFF) only takes 4 bytes.

Читайте также:  Команда линукс переход по папкам

— API-интерфейсы и-W -A vs. -W APIs

Интерфейсы API Win32 часто поддерживают варианты «-A» и «W». Win32 APIs often support both -A and -W variants.

— Варианты, распознаваемые кодовую страницу ANSI, настроенную для системы и поддержки char* , а варианты-W работают в кодировке UTF-16 и поддерживают WCHAR . -A variants recognize the ANSI code page configured on the system and support char* , while -W variants operate in UTF-16 and support WCHAR .

До недавнего времени Windows выделена «Юникод»-W Variant для API. Until recently, Windows has emphasized «Unicode» -W variants over -A APIs. Однако последние выпуски использовали кодовую страницу ANSI и — API-интерфейсы в качестве средства для поддержки приложений в кодировке UTF-8. However, recent releases have used the ANSI code page and -A APIs as a means to introduce UTF-8 support to apps. Если кодовая страница ANSI настроена для UTF-8, то API-интерфейсы работают в кодировке UTF-8. If the ANSI code page is configured for UTF-8, -A APIs operate in UTF-8. Эта модель имеет преимущество поддержки существующего кода, построенного с помощью API-интерфейсов, без изменения кода. This model has the benefit of supporting existing code built with -A APIs without any code changes.

Задание кодовой страницы процесса UTF-8 Set a process code page to UTF-8

Начиная с версии Windows 1903 (Май 2019), можно использовать свойство Активекодепаже в appxmanifest для упакованных приложений или манифест Fusion для неупакованных приложений, чтобы заставить процесс использовать UTF-8 в качестве кодовой страницы процесса. As of Windows Version 1903 (May 2019 Update), you can use the ActiveCodePage property in the appxmanifest for packaged apps, or the fusion manifest for unpackaged apps, to force a process to use UTF-8 as the process code page.

Вы можете объявить это свойство и целевой объект или выполнить его в более ранних сборках Windows, но необходимо как обычно выполнять обнаружение и преобразование кодовых страниц прежних версий. You can declare this property and target/run on earlier Windows builds, but you must handle legacy code page detection and conversion as usual. При использовании минимальной целевой версии Windows версии 1903 кодовая страница процесса всегда будет UTF-8, поэтому можно избежать обнаружения и преобразования кодовой страницы прежних версий. With a minimum target version of Windows Version 1903, the process code page will always be UTF-8 so legacy code page detection and conversion can be avoided.

Примеры Examples

Манифест appx для упакованного приложения: Appx manifest for a packaged app:

Манифест Fusion для неупакованного приложения Win32: Fusion manifest for an unpackaged Win32 app:

Добавление манифеста в существующий исполняемый файл из командной строки с помощью команды mt.exe -manifest -outputresource: ;#1 Add a manifest to an existing executable from the command line with mt.exe -manifest -outputresource: ;#1

Преобразование кодовой страницы Code page conversion

Поскольку Windows изначально работает в UTF-16 ( WCHAR ), может потребоваться преобразовать данные UTF-8 в UTF-16 (или наоборот) для взаимодействия с API Windows. As Windows operates natively in UTF-16 ( WCHAR ), you might need to convert UTF-8 data to UTF-16 (or vice versa) to interoperate with Windows APIs.

MultiByteToWideChar и WideCharToMultiByte позволяют выполнить преобразование между UTF-8 и UTF-16 ( WCHAR ) (и другими кодовыми страницами). MultiByteToWideChar and WideCharToMultiByte let you convert between UTF-8 and UTF-16 ( WCHAR ) (and other code pages). Это особенно полезно, когда устаревший API Win32 может понимать только WCHAR . This is particularly useful when a legacy Win32 API might only understand WCHAR . Эти функции позволяют преобразовать входные данные UTF-8 в WCHAR для передачи в API-интерфейс, а затем преобразовать все результаты при необходимости. These functions allow you to convert UTF-8 input to WCHAR to pass into a -W API and then convert any results back if necessary. При использовании этих функций с CodePage параметром CP_UTF8 , имеющим значение, используйте dwFlags либо 0 или MB_ERR_INVALID_CHARS , в противном случае — ERROR_INVALID_FLAGS . When using these functions with CodePage set to CP_UTF8 , use dwFlags of either 0 or MB_ERR_INVALID_CHARS , otherwise an ERROR_INVALID_FLAGS occurs.

Читайте также:  Понятие окна windows его основные элементы

CP_ACP«CP_UTF8 соответствует только в том случае, если работает в Windows версии 1903 (май 2019) или выше, а описанное выше свойство активекодепаже имеет значение UTF-8. CP_ACP equates to CP_UTF8 only if running on Windows Version 1903 (May 2019 Update) or above and the ActiveCodePage property described above is set to UTF-8. В противном случае она учитывает устаревшую системную кодовую страницу. Otherwise, it honors the legacy system code page. Рекомендуется использовать CP_UTF8 явно. We recommend using CP_UTF8 explicitly.

Изменить кодовую страницу консоли Windows по умолчанию на UTF-8

В настоящее время я использую Windows 7 x64, и обычно я хочу, чтобы все консольные инструменты работали с UTF-8, а не с кодовой страницей по умолчанию 850.

chcp 65001 Помогает запуск в командной строке перед использованием каких-либо инструментов, но есть ли способ установить его как кодовую страницу по умолчанию?

Обновить:

Изменение HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP значения, чтобы 65001 появилось, чтобы система не могла загрузиться в моем случае.

Предлагаемое изменение, HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun чтобы @chcp 65001>nul служить просто хорошо для моей цели. (спасибо Ole_Brun )

Чтобы изменить кодовую страницу только для консоли, выполните следующие действия:

  1. Пуск -> Выполнить -> regedit
  2. Перейти к [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\Autorun]
  3. Измените значение на chcp 65001

Лично мне не нравится смена реестра. Это может вызвать много проблем. Я создал командный файл:

Я сохранил C:\Windows\System32 как switch.bat.

Я создал ссылку для cmd.exe на рабочем столе.

В свойствах ярлыка cmd изменил место назначения на: C:\Windows\System32\cmd.exe /k switch

Вуаля, когда мне нужно набрать UTF-8, я использую эту ссылку.

  1. Значение должно быть в шестнадцатеричном
  2. Верхняя строка должна быть включена в точности как есть
  3. HKEY_CURRENT_USER не может быть сокращено
  4. меч не может быть опущен
  1. Значение может быть в декабре или шестнадцатеричном
  2. % SystemRoot% должен быть экранирован
  3. REG_DWORD нельзя опускать
  1. Значение может быть в декабре или шестнадцатеричном
  2. -Type DWord предполагается с PowerShell 3+
  3. Можно использовать ni -> New-Item
  4. Можно использовать sp -> Set-ItemProperty
  5. Можно использовать -ea 0 -> -ErrorAction Ignore
  1. Значение может быть в декабре или шестнадцатеричном
  2. Можно использовать / -> \
  3. Можно использовать HKCU -> HKEY_CURRENT_USER
  4. Можно использовать user -> HKEY_CURRENT_USER

Команда для изменения кодовой страницы есть chcp . Пример: chcp 1252 . Вы должны напечатать это в окне Powershell. Чтобы избежать необходимости набирать его каждый раз (если вам всегда приходится менять кодовую страницу), вы можете добавить его в командную строку программы. Для этого выполните следующие действия:

  1. Щелкните правой кнопкой мыши значок Powershell в меню «Пуск» и выберите «Дополнительно»> «Расположение файла».
  2. Щелкните правой кнопкой мыши ярлык Powershell и выберите «Свойства».
  3. Добавьте следующее в конец командной строки «Target»: -NoExit -Command «chcp 1252»

Будь счастлив. Не суетитесь с реестром Windows, если у вас нет другого выбора.

Это можно сделать, создав профиль PowerShell и добавив в него команду «chcp 65001> $ null»:

Это не требует редактирования реестра и, в отличие от редактирования ярлыка, будет работать, если PowerShell запускается в определенной папке с помощью контекстного меню проводника Windows.

В 1809 сборке Windows 10 мне удалось решить эту проблему навсегда, перейдя в систему Language settings , выбрав Administrative language settings , нажав Change system locale. и установив Beta: Use Unicode UTF-8 for worldwide language support флажок, а затем перезагрузив мой компьютер.

Таким образом, это относится ко всем приложениям, даже к тем, которые я не запускаю из командной строки!
(Что было необходимо для меня, так как я пытался редактировать код Agda из Atom.)

Как исправить отображение кириллицы или кракозябры в Windows 10

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

В этой инструкции — о том, как исправить «кракозябры» (или иероглифы), а точнее — отображение кириллицы в Windows 10 несколькими способами. Возможно, также будет полезным: Как установить и включить русский язык интерфейса в Windows 10 (для систем на английском и других языках).

Читайте также:  Fifa 2021 mac os

Исправление отображения кириллицы с помощью настроек языка и региональных стандартов 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 путем изменения кодовых страниц

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

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

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

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

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

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

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

  1. Зайдите в папку C:\ Windows\ System32 и найдите файл c_1252.NLS, нажмите по нему правой кнопкой мыши, выберите пункт «Свойства» и откройте вкладку «Безопасность». На ней нажмите кнопку «Дополнительно».
  2. В поле «Владелец» нажмите «Изменить».
  3. В поле «Введите имена выбираемых объектов» укажите ваше имя пользователя (с правами администратора). Если в Windows 10 используется учетная запись Майкрософт, вместо имени пользователя укажите адрес электронной почты. Нажмите «Ок» в окне, где указывали пользователя и в следующем (Дополнительные параметры безопасности) окне.
  4. Вы снова окажетесь на вкладке «Безопасность» в свойствах файла. Нажмите кнопку «Изменить».
  5. Выберите пункт «Администраторы» (Administrators) и включите полный доступ для них. Нажмите «Ок» и подтвердите изменение разрешений. Нажмите «Ок» в окне свойств файла.
  6. Переименуйте файл c_1252.NLS (например, измените расширение на .bak, чтобы не потерять этот файл).
  7. Удерживая клавишу Ctrl, перетащите находящийся там же в C:\Windows\System32 файл c_1251.NLS (кодовая страница для кириллицы) в другое место этого же окна проводника, чтобы создать копию файла.
  8. Переименуйте копию файла c_1251.NLS в c_1252.NLS.
  9. Перезагрузите компьютер.

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

Оцените статью