Иероглифы вместо русских букв windows 11

Обновлено: 21.11.2024

Набор поддерживаемых локалей различается в разных реализациях Java Platform Standard Edition (Java SE), а также в разных функциональных областях. На этой странице описана поддержка локали в Oracle Java SE Development Kit 11 (JDK).

Установщик и поддерживаемые языки

Установщики JDK локализованы для языков, указанных в таблице перевода пользовательского интерфейса. Установщики будут использовать языковой стандарт системы по умолчанию, чтобы определить, какой из поддерживаемых языков использовать во время установки. Если локаль системы по умолчанию не поддерживается установщиками, установщики будут отображаться на английском языке.

Включенные локали для функций java.util и java.text

Поддержка поведения, зависящего от локали, в пакетах java.util и java.text почти полностью независима от платформы, поэтому все локали поддерживаются одинаково и одновременно, независимо от операционной системы хоста и ее локализации. Единственная функция, зависящая от платформы, – это установка начального языкового стандарта по умолчанию и начального часового пояса по умолчанию в зависимости от языкового стандарта и часового пояса основной операционной системы.

JDK 11 Oracle поддерживает все локали, предоставленные поставщиками данных локалей, указанными ниже.

Поддерживаемые локали через поставщиков данных локали

Локали в Oracle JDK 11 предоставляются несколькими источниками данных. Они сгруппированы по источникам их предоставления (далее именуемые «поставщик данных локали»). В JDK 11 поддерживаются следующие пять поставщиков данных локали.

Конфигурация региональных поставщиков данных

В Oracle JDK 11 данные локали из поставщика данных локали CLDR используются по умолчанию, а в некоторых случаях, когда устаревшие локали указаны в службах, зависящих от локали, например, вариант "JP" локали "ja_JP", данные локали из " Используется провайдер COMPAT. Локали от других поставщиков локалей можно использовать, настроив системное свойство «java.locale.providers». Например, если пользователь хочет иметь такой же опыт работы с базовой операционной системой, указав системное свойство с помощью «HOST,CLDR,COMPAT», позволяет службам, зависящим от языкового стандарта, вести себя так же, как базовая ОС делает для языкового стандарта по умолчанию. Поведение по умолчанию эквивалентно указанию системного свойства с помощью «CLDR, COMPAT». Указание системного свойства с помощью «COMPAT,SPI» будет иметь такое же поведение с предыдущими выпусками JDK.

Подробнее см. в описании класса класса java.util.spi.LocaleServiceProvider.

Поддерживаемые расширения языковых тегов Unicode

Спецификация LDML Консорциума Unicode определяет расширения локали Unicode. Вот поддерживаемые расширения в Oracle JDK 11:

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

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

Оглавление

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

Самый простой и обычно работающий способ убрать крапинки и вернуть русские буквы в Windows 10 — исправить некоторые неверные настройки в настройках системы.

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

  1. Откройте панель управления (для этого вы можете начать с ввода "Панель управления" или "Панель управления" в поиске на панели задач.
  2. Убедитесь, что для параметра "Просмотр" установлено значение "Значки", и выберите "Региональные политики".
  3. На вкладке "Администрирование" в разделе "Язык для программ, не поддерживающих Unicode" нажмите кнопку "Изменить языковой стандарт системы".
  4. Выберите русский язык, нажмите "ОК" и подтвердите перезагрузку компьютера.

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

Как исправить иероглифы Windows 10, изменив кодовые страницы

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

Использование редактора реестра

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

  1. Нажмите Win + R на клавиатуре, введите regedit и нажмите Enter, откроется редактор реестра.
  2. Перейдите в раздел регистрации

и прокрутите вправо до конца значений в этом разделе.

Обычно это решает проблему с отображением русских букв. Разновидность метода редактора реестра (но менее предпочтительная) — посмотреть текущее значение параметра 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. Введите свое имя пользователя (с правами администратора) в поле «Введите имена выбираемых объектов». Если вы используете учетную запись Microsoft в Windows 10, введите свой адрес электронной почты вместо имени пользователя. Нажмите «ОК» в окне, в котором вы указали пользователя, и в следующем окне (Дополнительные параметры безопасности).
  4. Вы вернетесь на вкладку "Безопасность" в свойствах файла. Нажмите кнопку "Изменить".
  5. Выберите «Администраторы» и включите для них полный доступ. Нажмите «ОК» и подтвердите изменение разрешений. Нажмите "ОК" в окне свойств файла.
  6. Переименуйте файл c_1252.NLS (например, измените расширение на .bak, чтобы этот файл не потерялся).
  7. Удерживая нажатой клавишу Ctrl, перетащите файл в C:System32 файл c_1251.NLS (набор символов для кириллицы) в другое место в том же окне браузера. чтобы создать копию файла.
  8. Переименуйте копию файла c_1251.NLS в c_1252.NLS..
  9. Перезагрузите компьютер.

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

У нас есть проект в Team Foundation Server (TFS), в котором есть неанглийский символ (š). При попытке написать несколько вещей, связанных со сборкой, мы столкнулись с проблемой — мы не можем передать букву š инструментам командной строки. Командная строка или что-то еще портит его, и утилита tf.exe не может найти указанный проект.

Я пробовал разные форматы для файла .bat (ANSI, UTF-8 со спецификацией и без нее), а также писал сценарии на JavaScript (который по своей сути является Unicode), но безуспешно. Как выполнить программу и передать ей командную строку Unicode?

Python 3.6: "консоль по умолчанию в Windows принимает все символы Unicode с этой версией" (ну, для меня это большая часть), НО вам нужно настроить консоль: щелкните правой кнопкой мыши в верхней части окна (команды cmd или python IDLE), по умолчанию/шрифт выберите «Консоль Lucida».

@LưuVĩnhPhúc. Нет, речь идет о передаче аргументов командной строки в формате Unicode, а не об отображении текста в консоли. Консоль может вообще не участвовать.

18 ответов 18

что изменит кодовую страницу на UTF-8. Кроме того, вам необходимо использовать консольные шрифты Lucida.

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

@bobince У вас есть пример ошибки в поддержке кодовой страницы Windows 65001? Мне любопытно, потому что я никогда не сталкивался с ним, и гугление тоже ничего не дало. (Конечно, пакетные файлы перестают работать, но UTF-8 вряд ли можно назвать гражданином второго сорта.)

@romkyns: Насколько я понимаю, вызовы, которые возвращают количество байтов (например, fread/fwrite/и т. д.), на самом деле возвращают количество символов. Это вызывает самые разнообразные симптомы, такие как неполное чтение ввода, зависания в fflush, битые пакетные файлы и так далее. Какой-то фон. Кодовые страницы по умолчанию, используемые для «многобайтовых» локалей CJK, имеют встроенную специальную обработку, чтобы исправить это, но 65001 не поддерживает ее.

Тем не менее, здесь возникает интересный вопрос: является ли ошибка тем, что она должна сообщать байты, а вместо этого сообщает символы, или потому, что приложения, использующие ее, ошибочно принимают байты за символы? Другими словами, это сбой API или сбой использования API?

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

  • CMD и "консоль" – не связанные между собой факторы. CMD.exe — это лишь одна из программ, готовых «работать внутри» консоли («консольных приложений»).
  • Насколько мне известно, CMD отлично поддерживает Unicode; вы можете вводить/выводить все символы Unicode, когда активна любая кодовая страница.
  • Консоль Windows имеет МНОГО поддержки Unicode, но она не идеальна (просто «достаточно хороша»; см. ниже).
  • chcp 65001 очень опасен. Если программа не была специально разработана для обхода дефектов в Windows API (или не использует библиотеку времени выполнения C, в которой есть эти обходные пути), она не будет работать надежно. Win8 устраняет ½ этих проблем с помощью cp65001 , но остальные по-прежнему применимы к Win10.
  • Я работаю в cp1252. Как я уже говорил: для ввода/вывода Unicode в консоли не нужно задавать кодовую страницу.
  • Для чтения/записи Unicode на консоль приложение (или его библиотека среды выполнения C) должно быть достаточно умным, чтобы использовать не File-I/O API, а Console-I/O API. (Для примера посмотрите, как это делает Python.)
  • Точно так же, чтобы читать аргументы командной строки Unicode, приложение (или его библиотека времени выполнения C) должно быть достаточно умным, чтобы использовать соответствующий API.
  • Отрисовка консольных шрифтов поддерживает только символы Unicode в формате BMP (другими словами: ниже U+10000 ). Поддерживается только простой текстовый рендеринг (поэтому европейские и некоторые восточноазиатские языки должны работать нормально, если используются предварительно составленные формы). [Здесь мелкий шрифт для восточноазиатских символов и символов U+0000, U+0001, U+30FB.]

Значения по умолчанию для Windows не очень полезны. Для наилучшего опыта необходимо настроить 3 элемента конфигурации:

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

Еще одна проблема с "Вставкой" в консольное приложение (очень техническая):

  • Шестнадцатеричный ввод выводит символ по клавише KeyUp или Alt ; все другие способы доставки символа происходят в KeyDown ; так много приложений не готовы видеть символ на KeyUp. (Применимо только к приложениям, использующим Console-I/O API.)
  • Вывод: многие приложения не будут реагировать на события ввода HEX.
  • Более того, что происходит с «Вставленным» символом, зависит от текущей раскладки клавиатуры: можно ли набрать символ без использования префиксных клавиш (но с произвольной сложной комбинацией модификаторов, как в Ctrl-Alt-AltGr-Kana-Shift -Gray* ), то он доставляется при эмулированном нажатии клавиши. Это то, что ожидает любое приложение, поэтому можно вставлять все, что содержит только такие символы.
  • Однако «другие» символы доставляются путем эмуляции шестнадцатеричного ввода.

Вывод: если ваша раскладка клавиатуры не поддерживает ввод БОЛЬШОГО количества символов без префиксных клавиш, некоторые приложения с ошибками могут пропускать символы при вставке через пользовательский интерфейс консоли: Alt-Space ЭП. (Вот почему я рекомендую использовать мои раскладки клавиатуры!)

Следует также помнить, что «альтернативные, «более функциональные» консоли» для Windows вовсе не являются консолями. Они не поддерживают API-интерфейсы консольного ввода-вывода, поэтому программы, работающие с этими API-интерфейсами, не будут работать. (Однако программы, которые используют только «API File-I/O для дескрипторов файлов консоли», будут работать нормально.)

Одним из примеров такой неконсольной версии является часть Microsoft Powershell. Я не использую это; чтобы поэкспериментировать, нажмите и отпустите WinKey , затем введите powershell .

установить шрифт, раскладку клавиатуры (и, при желании, разрешить шестнадцатеричный ввод).

используйте только те программы, которые проходят через API Console-I/O и принимают аргументы командной строки Unicode. Например, любая программа, скомпилированная с помощью cygwin, должна подойти. Как я уже сказал, CMD тоже подойдет.

UPD: Изначально из-за ошибки в cp65001 я перепутал уровни ядра и CRTL (UPD²: и API пользовательского режима Windows!). Также: Win8 исправляет половину этой ошибки; Я уточнил раздел об «улучшенном консольном приложении» и добавил ссылку на то, как это делает Python.

Роб Вудгейт

Роб Вудгейт
Писатель

Роб Вудгейт — писатель и ИТ-консультант с почти 20-летним опытом работы в частном и государственном секторах. Он также работал инструктором, специалистом по технической поддержке, менеджером по доставке, системным администратором и выполнял другие функции, связанные с обеспечением совместной работы людей и технологий. Подробнее.

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

Что такое кодировка символов?

Если вы не знаете, что такое «кодировка символов», у нас есть для вас подробное объяснение. Менее исчерпывающее объяснение состоит в том, что символ — это глиф, который появляется на экране, когда вы что-то печатаете. Итак, каждая буква в этой статье — это глиф, представляющий букву — a, b, c и так далее. В фоновом режиме ваш компьютер представляет эти глифы с помощью кода, который интерпретируется программой (например, веб-браузером или текстовым процессором), а затем отображает их на экране в виде символа.

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

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

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

Теперь вы можете начать видеть масштаб символов, которые должны быть закодированы как глифы. Одних только китайских глифов насчитывается более 70 000. Кодировка символов содержит несколько кодовых точек, каждая из которых может кодировать один символ. ASCII, о которой вы, вероятно, слышали, был ранней кодировкой латинского алфавита, в которой было 128 кодовых точек, чего недостаточно, чтобы охватить все возможные символы, используемые людьми.

Рекомендуемая W3 кодировка для HTML называется UTF-8 и имеет 1 112 064 кодовых точки. Этого достаточно, чтобы охватить почти все символы всех языков во всех алфавитах (хотя и не во всех), и он используется на 93 % всех веб-сайтов. UTF-8 также является кодировкой, рекомендованной консорциумом Internet Mail.

Зачем мне его менять?

Outlook, как и любой другой современный почтовый клиент, кодирует и декодирует кодировку UTF-8.

Но если Outlook поддерживает UTF-8, а UTF-8 является рекомендуемой кодировкой, почему вы видите нечитаемый символ? Это может произойти по нескольким причинам, но основная из них заключается в том, что вы просматриваете почту в виде обычного текста (либо потому, что вы явно хотели это сделать, либо антивирусный сканер преобразовал его в обычный текст до того, как он попал к вам) или из-за кодировки который вы используете, имеет значение, отличное от UTF-8.

Кодировка входящей почты определяется отправителем, поэтому, например, если он использует кодировку ASCII, Outlook будет отображать почту с использованием кодировки ASCII. Если в настройках Word задана замена «прямых кавычек» «умными кавычками» (теми, которые указывают под углом, чтобы показать, открываются они или закрываются кавычки), тогда вы увидите «нечитаемые» символы в почте вместо умных кавычки, потому что ASCII не содержит подходящих символов для умных кавычек.

Таким образом, изменение кодировки сообщения может позволить вам просматривать эти искаженные символы так, как они должны отображаться.

Хорошо, как мне это изменить?

К счастью, изменить кодировку сообщения в Outlook довольно просто. Дважды щелкните сообщение, чтобы открыть его.На вкладке Главная окна сообщения нажмите Действия > Другие действия > Кодировка, чтобы узнать, какая кодировка используется.

Это электронное письмо от Microsoft о том, что Clutter перемещает вещи из моей папки "Входящие". Как видите, Microsoft использует западноевропейскую кодировку для своей почты. Чтобы изменить его, нажмите "Еще" и выберите нужную кодировку, например UTF-8.

Это все, что нужно сделать — теперь вы сможете прочитать электронное письмо.

Если вы хотите узнать, как кодируются ваши исходящие электронные письма, выберите «Файл» > «Параметры» > «Дополнительно» и прокрутите вниз до «Международные параметры». Вы ищете опцию «Предпочтительная кодировка для исходящих сообщений».

По умолчанию используется западноевропейский формат, и самые внимательные из вас могут задаться вопросом, почему это так, ведь, как упоминалось выше, рекомендуемым форматом электронной почты является UTF-8. Ответ заключается в том, что западноевропейский язык является подмножеством UTF-8 и поэтому может быть прочитан с использованием UTF-8. Если вы покупаете копию Outlook, предназначенную, например, для Греции, по умолчанию будет использоваться кодировка Windows-1253, которая также является подмножеством UTF-8.

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

  • › PSA: карточки контактов Outlook легко подделать
  • › Почему прозрачные чехлы для телефонов желтеют?
  • › Как восстановить метки панели задач в Windows 11
  • › Что означает XD и как вы его используете?
  • ›5 шрифтов, которые следует прекратить использовать (и лучшие альтернативы)
  • › Почему СМС должен умереть
  • › Худшее, что есть в телефонах Samsung, — это программное обеспечение Samsung.

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