Что нового

Консоль забыла русский язык

Naisho

Знающий
Сообщения
86
Репутация
12
Насколько я понимаю, в новых версиях SciTE больше нет "настоящей" "Code Page Property" - все скрипты по умолчанию воспринимаются как UTF8 without BOM и перекодируются в этот формат. Соответственно и проблемы с консолью редактора. Начиналось с того, что кодировка ломалась при компиляции - спасала только использование UTF16. Сейчас получше, но всё равно стоит поставить свежие версии "комплектующих" SciTE из их бета-директории на официальном сайте.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Naisho
Насколько я понимаю, в новых версиях SciTE больше нет "настоящей" "Code Page Property" - все скрипты по умолчанию воспринимаются как UTF8 without BOM и перекодируются в этот формат.
Неправильно понимаете. Да, они там все помешались на UTF8. Но по умолчанию всё равно используется локальная кодировка. Просто сейчас дополнительно добавлено автоопределение кодировки при открытии файла при отсутствии BOM (при наличии BOM, понятно, ничего определять не нужно). Настройки находятся в SciTEGlobal.properties. В последней версии добавили 4 (по умолчанию)
Код:
# Internationalisation
#NewFileEncoding=CodePage/UTF8BOM/UTF8/UTF16BE/UTF16LE         # Only available in SciTE4AutoIt3 version
#~ Enhance function of auto checking utf8: providing two methods
#~ utf8.auto.check=1 # detect utf8 and add BOM automatically   Credits to SciTE-RU
#~ utf8.auto.check=2 # detect utf8 and do not add BOM
#~ utf8.auto.check=3 # detect ascii high characters and if none found set default encoding to UTF8 and add BOM
utf8.auto.check=4    # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM
Можно закомментировать и последний параметр, тогда автоопределение отключится.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
InnI сказал(а):
Да, они там все помешались на UTF8.
Походу они там полностью с катушек съехали. Теперь они даже утилиты не компилируют, т.к. на них реагируют всякие левые антивирусы (это по поводу вирусов в предыдущем вопросе). А переход на UTF8, это полнейший бред.
 

gefestin

Новичок
Сообщения
2
Репутация
0
Привет, столкнулся с такой же проблемой
Пробовал отредактировать файл SciTEUser.properties , и добавил туда output.code.page=65001 , но проблема осталась

SciTE
Version 3.7.3
Feb 16 2017 21:41:17
 

Вложения

  • Без названия.png
    Без названия.png
    21.6 КБ · Просмотры: 60

wehr

Новичок
Сообщения
7
Репутация
0
Есть решение , нужно открыть скрипт в notepad++ и перекодировать в utf-8 :smile:
 

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Если в последней полной SciTE при установленном параметре code.page=0
перестаёт правильно отображаться и вводиться русская ANSI, попробуйте
раскомментировать параметр character.set=204
В файле C:\Program Files (x86)\AutoIt3\SciTE\SciTEGlobal.properties
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    10.1 КБ · Просмотры: 45

randal

Новичок
Сообщения
21
Репутация
4
не получается победить русскую кодировку в консоли autoit, но у меня вместо русских букв - вопросительные знаки как-то так: ?? ?? ??. Перепробовал уже все советы из этой темы, установил Scite от Yashied и результат тот же :(
 
Сообщения
142
Репутация
-3
randal сказал(а):
не получается победить русскую кодировку в консоли autoit, но у меня вместо русских букв - вопросительные знаки как-то так: ?? ?? ??. Перепробовал уже все советы из этой темы, установил Scite от Yashied и результат тот же :(
Аналогично. У меня окна сообщений с русским текстом, так текст в них при ошибке выводит в виде
Код:
'?????'.
 

randal

Новичок
Сообщения
21
Репутация
4
в качестве временной меры мне помог такой костыль:
Сначала в AutoIt3Wrapper заменил
Код:
ConsoleWrite(BinaryToString(StringToBinary($s, 4), 1))
на
ConsoleWrite($s)

а далее весь вывод в консоль прогоняю через перекодировщик из библиотеки Encoding.au3 таким образом:
Код:
ConsoleWrite(_Encoding_ANSIToUTF8($string))


Выходит, что текст исходника у меня в ANSI? но почему, если в настройках выставлено UTF8 :scratch:
Может дело в винде? Я использую английскую Win Server 2008
 
Сообщения
142
Репутация
-3
randal сказал(а):
Выходит, что текст исходника у меня в ANSI? но почему, если в настройках выставлено UTF8 :scratch:
Может дело в винде? Я использую английскую Win Server 2008
Я думаю, что au3 является по сути текстовым файлом, а текстовые файлы пишутся по умолчанию в ANSI. У меня на другой программе для автоматизации тоже было, что все комментарии русские комментарии в старом скрипте превратились в ???. Возможно, что открыл где-то ещё.


Добавлено:
Сообщение автоматически объединено:

randal сказал(а):
в качестве временной меры мне помог такой костыль:
Сначала в AutoIt3Wrapper заменил
Код:
ConsoleWrite(BinaryToString(StringToBinary($s, 4), 1))
на
ConsoleWrite($s)

а далее весь вывод в консоль прогоняю через перекодировщик из библиотеки Encoding.au3 таким образом:
Код:
ConsoleWrite(_Encoding_ANSIToUTF8($string))
Впору в UDF такое превращать и через include использовать.
 

randal

Новичок
Сообщения
21
Репутация
4
ЭйчЭйч сказал(а):
Я думаю, что au3 является по сути текстовым файлом, а текстовые файлы пишутся по умолчанию в ANSI.
Вообще-то нет, по новым стандартам по умолчанию всё в UTF. Я в SciTe проверял, там где File-Encoding галка стоит на UTF8 (без BOM). Пробовал уже и менять опции авто-определения и отключать их вовсе, и выставлять галку руками в разные позиции - толку ноль.
По ходу пьесы выяснилось ещё, что тот же баг с заменой букв на вопросы вылазит при использовании ANSI ODBC-драйвера MySQL, пришлось перейти на Unicode-версию. Что подтолкнуло к мысли, что дело, видимо, в английской винде и её (не)понимании ANSI-кириллицы
[quote author=ЭйчЭйч]
Впору в UDF такое превращать и через include использовать.
[/quote]
Прикол в том, что если делать эту перекодировку в AutoIt3Wrapper, то способ не работает - пишет кракозябры (но уже не вопросы, ага, прогресс :scratch:)
 

randal

Новичок
Сообщения
21
Репутация
4
Решил проблему самостоятельно, если вдруг у кого-то аналогичная, то рассказываю подробности:
да, проблема была в английской винде, как я и предположил в ходе экспериментов. А точнее в том, что был установлен английский язык для программ, не поддерживающих юникод.
Исправляется так: (Win 7/2008) заходим в Панель управления->Язык и региональные стандарты->Закладка «Дополнительно»->Язык программ не поддерживающих Юникод. Меняем язык на Русский, перезагружаем компьютер.

В windows 10 кодировка привязывается глобально к общему языку системы. Поэтому если у вас проблемы с отображением шрифтов, то нужно пройти: Пуск -> Параметры -> Время и Язык -> Регион и язык -> Дополнительные настройки даты и времени, региональные параметры -> и посмотреть настройки в пунктах: Язык и Региональные стандарты.
 

DyadyaGenya

Знающий
Сообщения
300
Репутация
10
Решил свою проблему в версии Lite.
В главном меню "Options" выбрал пункт "Open Global Options File". Открылся пустой файл с этим именем. В нем написал одну строку:
Код:
output.code.page=0

И без всяких перезагрузок кодировка вывода в консоль изменилась.
 
Верх