Есть ли кодировка IBM866 в забугорных win консолях?

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Сквозняк » 07.05.2021 20:12:58

Интересуют не шрифты, а сами кодировки. То есть, если выводимый в консоль текст отобразится неправильно, но сами байты не пострадают, это нормально. Это важно для правильного использования путей содержащих неанглийские буквы. С отсутствием в системе русского шрифта можно смириться - если кто-то не прочитает системную надпись, то и хрен с ним, а вот если программа не найдёт свои файлы и не сможет создать каталог из-за порчи виндой системной команды, это уже фатальный баг программы.
Сейчас работоспособность навигации по каталогам работает через
Код: Выделить всё
setconsolecp(866);

Но не превратится ли это в тыкву на бразильской, японской или ещё какой семёрке или десятке?
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Vadim » 08.05.2021 05:39:23

По идее, все буковки хранятся в виде их кодов, а код - это цифра. И вряд ли весёлые и плутоватые бразильянцы станут отказываться от применения цифр на своём компе... :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение SSerge » 08.05.2021 11:36:43

Сквозняк писал(а):Но не превратится ли это в тыкву на бразильской, японской или ещё какой семёрке или десятке?


возможно, что и превратится.
В качестве примера, я полагаю, можно попробовать выполнить setconsolecp для какой-нибудь германской, итальянской или французской кодовой страницы - внимание! - не устанавливая поддержку языка в ОС, и посмотреть, что из этого выйдет.
Заодно, есть занимательная разница в том, как имена файлов хранятся в NTFS и FAT32. Вот с FAT все должно быть очень нехорошо в ОС других национальностей.
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Сквозняк » 08.05.2021 16:10:40

Vadim писал(а):По идее, все буковки хранятся в виде их кодов, а код - это цифра. И вряд ли весёлые и плутоватые бразильянцы станут отказываться от применения цифр на своём компе... :-)

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

Добавлено спустя 26 минут 32 секунды:
SSerge писал(а):
Сквозняк писал(а):Но не превратится ли это в тыкву на бразильской, японской или ещё какой семёрке или десятке?


возможно, что и превратится.
В качестве примера, я полагаю, можно попробовать выполнить setconsolecp для какой-нибудь германской, итальянской или французской кодовой страницы - внимание! - не устанавливая поддержку языка в ОС, и посмотреть, что из этого выйдет.
Заодно, есть занимательная разница в том, как имена файлов хранятся в NTFS и FAT32. Вот с FAT все должно быть очень нехорошо в ОС других национальностей.

Самое лучшее это установить несколько мумбоюмбовских десяток в виртуалку и протестировать перемещение в каталог на мумбоюмбовском языке и обратно. А для начала проверить в консоли команду
Код: Выделить всё
chcp 866


Список имеющихся кодировок получается таким батником, но это не точно:
Код: Выделить всё
@echo off
echo start TimeStamp %time%>>code.txt
setlocal enabledelayedexpansion
for /l %%i in (1,1,65001) do (
    >nul 2>&1 chcp %%i
    set x=!errorlevel!
    if !x!==0 (>>code.txt echo %%i)
)
echo finish TimeStamp %time%>>code.txt
pause


Десятка в виртуалке работает в режиме слайдшоу, если железо не тянет. Потому наверно буду качать и пробовать на ноуте, чтобы комп не занимать, там же и флешку виндовой программой портить надо, а в ноуте суперскорость при сложных вычислениях. Надеюсь недели хватит чтобы протестить японскую, бразильскую и буржуйскую десятки. Ну а может и две уйдёт. Придумали в мелкософте развлечение.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Снег Север » 08.05.2021 21:04:19

Сколько у линуксойдов проблем на пустом месте из-за порочной привычки выводить текст в консоль, а не во временный файл! :shock:
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Сквозняк » 08.05.2021 21:21:40

А как ты в маздайке потом найдёшь этот файл, если в путях окажутся неанглийские буквы и она команды программы неправильно перекодирует? Да даже каталог создать в путях с неанглийскими буквами, считанных из системной переменной, это уже достижение. Читаешь путь, с точности до байта по нему пытаешься прыгнуть, винда путь прыжка перекодирует и хрясь - заданный путь не существует. В линуксе таких чудес не замечал, это виндовое ноу-хау. Причём, если установить правильную кодировку в консоль, то нормализуется перекодирование системных команд программы идущих и без консоли. После такой гадости нет ничего удивительного, что некоторые утилиты написанные для икспишки нормально не работают в семёрке - в ней или висте как раз появились эти "чудеса" с кодировками.

В русифицированной семёрке и десятке эту гадость поборол, теперь нужно предпринять титанический мартышкин труд чтобы проверить в нескольких не русских.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение SSerge » 09.05.2021 04:35:19

Сквозняк писал(а):Список имеющихся кодировок получается таким батником


ммм. А как же EnumSystemCodePages и IsValidCodePage?
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Снег Север » 09.05.2021 08:24:13

Бедные, бедные малограмотные линуксойды... Они до сих пор не ведают, что еще со времен Windows XP существует системная функция GetShortPathNameW, с которой про все проблемы с кодировками можно забыть раз и навсегда... :roll:
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Seenkao » 09.05.2021 09:33:39

Снег Север писал(а):до сих пор не ведают, что еще со времен Windows XP существует системная функция GetShortPathNameW
Загуглил? Она ещё со времён 95-й версии, если не раньше. Ты забыл рассказать, как ей пользоваться.

Сквозняк, Вадим правильно написал, что все символы - это просто коды. Используй низкоуровневые функции и определяй сам, какая кодировка у тебя. В противном случае, надо указывать, с какой кодировкой работаешь и уточнять, будут ли системные вызовы работать с этой кодировкой (не изменят ли её).
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Снег Север » 09.05.2021 11:41:50

Seenkao писал(а): Она ещё со времён 95-й версии, если не раньше. Ты забыл рассказать, как ей пользоваться.

Для сведения малограмотных линуксойдов - нет, не с 95-й, а как я написал - с Windows XP. А для тех, кого забанили в MSDN - стандартная фрипаскалевская обертка:
https://www.freepascal.org/docs-html/rt ... hname.html
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Seenkao » 09.05.2021 13:06:28

Снег Север писал(а):нет, не с 95-й, а как я написал - с Windows XP.

Ну да... это же я дурак, и от этого ни куда не убежать.
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Сквозняк » 09.05.2021 14:52:15

Снег Север писал(а):Бедные, бедные малограмотные линуксойды... Они до сих пор не ведают, что еще со времен Windows XP существует системная функция GetShortPathNameW, с которой про все проблемы с кодировками можно забыть раз и навсегда... :roll:


Ты прямо как тот мужик из анекдота, который орал в лесу "помогите", к нему пришёл медведь и спросил "зачем орёшь", тот ответил "а вдруг кто услышит" - "ну я услышал, легче стало?" Толку от получения данных от винды, если при их применении случится рандомная неведомая лажа и чтобы её избежать всё равно придётся выкручиваться. Сам принцип перекодирования команд без спроса - порочный и порождает проблемы на ровном месте.

Добавлено спустя 4 минуты 45 секунд:
SSerge писал(а):ммм. А как же EnumSystemCodePages и IsValidCodePage?

Можно и так и сяк получать данные, просто батник я прихватизировал из интернета готовый. В вайне он точно нормально не работает :D В той консоли скриптовой язык не на 100% соответствует виндовому. Программа на паскале же будет работать и там и там.

Добавлено спустя 7 минут 48 секунд:
Seenkao писал(а):Сквозняк, Вадим правильно написал, что все символы - это просто коды. Используй низкоуровневые функции и определяй сам, какая кодировка у тебя. В противном случае, надо указывать, с какой кодировкой работаешь и уточнять, будут ли системные вызовы работать с этой кодировкой (не изменят ли её).


Да весь вопрос в том, что надо произвести мартышкин труд с установкой виртуальных машин с не самой дружелюбной начинкой. Как потянет их железо, тот ещё вопрос. Вот и закинул удочку, вдруг у кого уже есть готовая виртуалка для тестирования. Но похоже винда на этом форуме настолько популярна, что кроме используемой, никакая больше не имеется. Вчера накачал маздаек, на новой неделе буду кидать их на флешку и насиловать ноут.
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Снег Север » 09.05.2021 15:38:49

Сквозняк писал(а):Толку от получения данных от винды, если при их применении случится рандомная неведомая лажа

Существует в природе хоть один случай "рандомной неведомой лажи" или как всегда - фантазии линуксойдов? Я за двадцать лет не встречал ни разу "рандомной неведомой лажи" в винде, а вот программистов с кривыми руками, сетовавших на "лажу" - много раз...
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3038
Зарегистрирован: 27.11.2007 16:14:47

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Seenkao » 09.05.2021 15:56:11

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

Не там ты это спрашиваешь. Больше тебе ответят на английском форуме, а ещё больше там, где конкретно линуксом занимаются (вероятно тоже какой-нибудь англоязычный форум). Здесь, больше по самому паскалю, FPC и Lazarus задавать вопросы (видимо) надо. Но бывает кто-то что-то знает! Не раз помогали! :D
Seenkao
энтузиаст
 
Сообщения: 526
Зарегистрирован: 01.04.2020 03:37:12

Re: Есть ли кодировка IBM866 в забугорных win консолях?

Сообщение Сквозняк » 09.05.2021 16:11:19

Снег Север писал(а):Существует в природе хоть один случай "рандомной неведомой лажи" или как всегда - фантазии линуксойдов?

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

Снег Север писал(а):Я за двадцать лет не встречал ни разу "рандомной неведомой лажи" в винде,

За что сидел? :mrgreen:

Добавлено спустя 5 минут 30 секунд:
Seenkao писал(а):Не там ты это спрашиваешь.


Там, в сраче познаётся истина! Рецепт "отруби интернет и поставь десятку в виртуалку" как бы есть, а лучшего и там скорее всего не посоветуют, скорее даже не поймут, как это десятка в виртуалке может злостно тормозить :P
Сквозняк
энтузиаст
 
Сообщения: 1123
Зарегистрирован: 29.06.2006 22:08:32

След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru