Console, ╤ и ╪ отображаются неправильно на консоли Windows 7 cmd - PullRequest
0 голосов
/ 28 марта 2020

У меня есть сценарий python, который выводит aws таблицу на вывод консоли, используя расширенные коды символов ASCII 179-218, более конкретно: 179 (│), 185 (╣), 186 (║), 187 (╗), 188 (╝), 200 (╚), 201 (╔), 202 (╩), 203 (╦), 204 (╠), 205 (=), 206 (╬), 207 (╧), 209 (╤) и 216 (╪).

Я запускаю сценарий на компьютерах Windows 10 и Windows 7. На машине Windows 10 все выглядит нормально, но когда я запускаю ее на машине Windows 7, она не показывает символы 209 (╤), 207 (╧) и 216 (╪) должным образом. Когда я копирую и вставляю символ в блокнот и блокнот ++, он показывает это правильно, а ввод этих символов непосредственно в другие места работает нормально. То же самое происходит, когда я набираю символ непосредственно в консоли, я получаю неправильный символ. Вот что показано:

enter image description here

В чем причина, и есть ли способ это исправить?

1 Ответ

1 голос
/ 29 марта 2020

Возможны две причины:

  1. Кодовая страница , используемая для кодирования символов в сценарии Python не совпадает в качестве кодовой страницы, используемой для консоли командным процессором Windows.
    Кодовая страница, используемая по умолчанию cmd.exe, зависит от региона / страны, настроенного для используемой учетной записи. Использованную кодовую страницу для собственной учетной записи пользователя можно увидеть, открыв командную строку и выполнив команду chcp. Затем его можно посмотреть в Википедии или на других веб-сайтах, если эта кодовая страница поддерживает символы, которые отображаются неправильно.

  2. Используемый консольный шрифт не поддерживает эту кодовую страницу и, соответственно, кодировку символов.

Следующие ответы о переполнении стека могут быть полезны для понимания проблемы:

Разница по умолчанию между консолью на Windows 7 и консолью на Windows 8 / 8.1 / 10 - это используемый по умолчанию шрифт, который нельзя изменить из пакетного файла с помощью Windows команды .

Поэтому я предлагаю сравнить кодовую страницу, используемую cmd.exe на Windows 7 и Windows 10. На одной кодовой странице, используемой обоими Windows согласно настроенной стране для учетной записи пользователя я предлагаю настроить Windows 7 шрифт Consolas или Lucida Console вместо значения по умолчанию Растровые шрифты (Terminal) и проверить, имеет ли это значение.

О проблемах со шрифтами c см. Также:

Кстати: на моей Windows 7 машине символы отображается при запуске командного файла, запущенного с файлом *.lnk с растровыми шрифтами 10x18 ( Selected Font - Terminal ), настроенными в свойствах файла ярлыка, действительно выглядят как символы шрифта Terminal в то время как символы, отображаемые при запуске cmd выглядят как символы Courier New, хотя свойства окна консоли cmd показывают Растровые шрифты 8x12 ( Выбранный шрифт - терминал ). Я вижу только при выборе 10x18 вместо 8x12 в Размер в свойствах cmd, меняется внешний вид символов. Таким образом, похоже, что растровый (растровый) шрифт Terminal не поддерживает размер по умолчанию 8x12 , и поэтому Windows использует Courier New в качестве замены для отображения символов в окне консоли по умолчанию. Такое же поведение я вижу на моей машине Windows XP. Странно, что Microsoft определила растровый шрифт Terminal в качестве шрифта по умолчанию для Windows XP / Vista / 7, но ни один из *.fon файлов этого шрифта не поддерживает размер шрифта по умолчанию 8x12 , и поэтому замена шрифта Courier New используется для отображения символов в окне консоли по умолчанию.

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