Что реальное означает “Выбора язык [для] программ не-Unicode …” диалоговое окно?

Что реальное означает "Выбора язык соответствовать языковой версии программ не-Unicode, Вы хотите использовать" диалоговое окно под Панелью управления-> Региональные настройки-> Усовершенствованный в WinXP и Win2003?

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

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

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

7
задан 16.04.2010, 17:01

2 ответа

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

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

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

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

alt text

Вводная информация:

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

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

Теперь, что делает Windows, когда он запускает старую программу, которая не знает о Unicode? Windows должен преобразовать между 8-разрядными символами ASCII и 16-разрядными символами Unicode. Windows может сделать это вполне прилично, если более старое приложение явно указывает кодирование, но много приложений не делают. Таким образом значения по умолчанию Windows к рассматриваемой установке: Язык для Программ неUnicode.


Править: обращение к комментариям Joshua

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

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

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

Эта установка влияет на что-либо еще?

У меня были редкие события, где использование корейской локали заставило приложение не функционировать правильно. Одно приложение, которое я помню, было инструментом предварительного просмотра регулярного выражения. Это просто не привело к корректным результатам, когда в корейской локали (или возможно это даже не запустится?) Я должен был переключиться на американскую локаль каждый раз, когда я хотел использовать эту программу.

7
ответ дан 07.12.2019, 14:57

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

Источник.

Или:

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

Только программы не-Unicode затронуты этой установкой. Язык, который Вы выбираете для этой опции, не изменяет меню и диалоговые окна Windows или других программ Unicode.

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

Больше информации в Language для Программ неUnicode.

1
ответ дан 07.12.2019, 14:57

Теги

Похожие вопросы