7

Каково реальное значение диалогового окна «Выберите язык, который соответствует языковой версии не-Unicode-программ, которые вы хотите использовать» в Панели управления-> Региональные настройки-> Дополнительно в WinXP и Win2003?

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

Но можно ли ожидать каких-либо других изменений в поведении от этого параметра? Любое понимание того, что на самом деле происходит, когда этот параметр изменяется?

Изменить: Каков внутренний (например, Windows API) способ доступа к значению?

2 ответа2

7

Быстрый ответ: Windows использует этот параметр в качестве руководства для преобразования старых 8-разрядных символов ASCII в современные 16-разрядные символы Юникода. Некоторые приложения используют этот параметр, чтобы определить, какой язык интерфейса пользователя должен отображаться.

Обработка текстовых файлов зависит от приложения, поэтому этот параметр не повлияет на это.

Не совсем верно. Вот несколько примеров: (при установке на корейский язык для программ, не поддерживающих Юникод, '\' (обратная косая черта) заменяется на '₩' (символ корейской валюты))

  • Во многих приложениях все «\» отображаются как «₩». Посмотрите на gVim (текстовый редактор). Примечание: лежащие в основе данные остаются такими же, как при появлении '\'. Если вы откроете этот файл на другом компьютере, он снова будет выглядеть как «\».
  • Все пути к файлам разделены символом «₩».
  • Некоторые приложения, такие как видеодрайверы Intel, используют этот параметр, чтобы решить, какой язык интерфейса отображать.

альтернативный текст

Справочная информация:

Windows используется для хранения строк с 8-битными символами ASCII. То есть каждый символ использовал 8 двоичных цифр. Это позволило только 256 различных символов; недостаточно, чтобы представлять все письменные языки мира. Поэтому разные языковые регионы решили по-разному интерпретировать 8-битные символы в соответствии со своим языком (добавление акцентированных гласных, собственный знак валюты в дополнение к '$' и т.д.) Это называется кодированием. Приложения должны конкретно указывать Windows, какую кодировку использовать; многие программы этого не делают, поэтому Windows предполагает локальную кодировку для этой версии Windows.

Теперь Windows хранит строки с 16-битными символами Unicode. Каждый символ использует в два раза больше битов. Это позволяет использовать до (почти) 65 536 различных символов. По-прежнему недостаточно для представления всех письменных языков мира, но Unicode также указывает способ выбора определенных наборов символов из гораздо более широкого круга символов.

Что теперь делает Windows, когда запускает старую программу, которая не знает о Unicode? Windows должна преобразовывать 8-битные символы ASCII в 16-битные символы Юникода. Windows может сделать это довольно хорошо, если старое приложение явно указывает кодировку, но многие приложения этого не делают. Таким образом, в Windows по умолчанию используется значение «Язык» для программ, не поддерживающих Юникод.


Изменить: адресация комментариев Джошуа

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

И да и нет. Нечто, называемое « связывание шрифтов », происходит для отображения «₩», когда шрифт TrueType не включает этот символ. Только «₩» отображается другим шрифтом. Однако в случае шрифтов, отличных от TrueType, используется совершенно другой шрифт (например, в консоли cmd.) Кроме того, символы валюты - это особый случай. Windows выполняет дополнительную работу по замене символа «\» на символ местной валюты, чтобы поддерживать поведение предыдущих версий Windows.

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

Этот параметр влияет на что-нибудь еще?

У меня был редкий опыт, когда использование корейского языка приводило к неправильной работе приложения. Одно приложение, которое я помню, было инструментом предварительного просмотра регулярных выражений. Просто он не дал правильных результатов, когда в корейском языке (или, может быть, он даже не запустится?) Мне приходилось переключаться на язык США, когда я хотел использовать эту программу.

1

Платформы на основе Unicode, такие как Windows XP и Server 2003, эмулируют языковую среду, необходимую для запуска приложений, не поддерживающих Unicode, путем внутреннего преобразования не-Unicode текстовых данных приложения в Unicode, используя общесистемную переменную, обычно называемую "системный языковой стандарт" (или "язык"). для приложений, не поддерживающих Юникод "). Язык приложений, не поддерживающих Юникод, должен быть того же сценария или семейства, что и язык, определенный "системным языком". Невыполнение этого условия приводит к отображению мусорных символов в пользовательском интерфейсе приложения.

Источник

Или же:

Этот параметр позволяет программам, которые не поддерживают Unicode, отображать меню и диалоговые окна на их родном языке, устанавливая необходимые кодовые страницы и шрифты. Однако программы, разработанные для других языков, могут отображать текст неправильно.

Этот параметр влияет только на программы, не поддерживающие Юникод. Язык, который вы выбираете для этой опции, не меняет меню и диалоговые окна Windows или других программ Unicode.

из Для отображения не-Unicode программ на их родном языке.

Больше информации на языке для не-Unicode программ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .