Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

C#.Консоль.Кодировка

Автор Тайльнемер, апреля 26, 2010, 18:21

0 Пользователи и 1 гость просматривают эту тему.

myst


Алексей Гринь

肏! Τίς πέπορδε;

RawonaM

Цитата: Алексей Гринь от апреля 27, 2010, 18:21
Цитата: myst от апреля 27, 2010, 18:18
ЦитироватьА почему нельзя задать родную для винды utf16?
В консоли? :o
Хм. Utf8 не пугает, а utf16 пугает? А в чём разница? Неужели они не сделали никаких костылей в ЭМУЛЯТОРЕ консоли для поддержки родного utf16, который внутри кишок винды сидит (даже ascii-функции все к нему же переводятся!) Странно...
Зачем вообще utf16? Она ж зря место расходует, а результат тот же. В чем может быть преимущество?

Алексей Гринь

Цитата: RawonaM от апреля 27, 2010, 18:27
Зачем вообще utf16? Она ж зря место расходует, а результат тот же. В чем может быть преимущество?
Какая разница для потока? Мы же с консоли читаем.

А преимущество разве что в более быстрых и простых преобразованиях на строках.
Да и в контексте сишарпа String'и всё равно в utf16 хранятся.

«Зря место расходует» — это было актуально 20 лет назад :)
И мы говорим о C#'а, а тут GC и «зря оперативную память расходует» :)

На совр. компьютерах особой разницы между utf'ами нету. Дело вкуса чисто.
肏! Τίς πέπορδε;

myst

Цитата: Алексей Гринь от апреля 27, 2010, 18:26
Цитата: myst от апреля 27, 2010, 18:25
Нуль-терминаторы же через байт. ;)
И?
Что и? Ты ему скармливаешь строку в UTF-16, а он считывает только первый байт и успокаивается.

Алексей Гринь

Цитата: myst от апреля 27, 2010, 18:45
Что и? Ты ему скармливаешь строку в UTF-16, а он считывает только первый байт и успокаивается.
А можно было спроектировать не per ano. Если у эмулятора консоли можно изменить кодировку — то почему нельзя сделать так, чтобы при смене на utf16 он кушал по два байта?
肏! Τίς πέπορδε;

Python

Цитата: Алексей Гринь от апреля 27, 2010, 18:16
А почему нельзя задать родную для винды utf16?
Цитата: Алексей Гринь от апреля 27, 2010, 18:21
Неужели они не сделали никаких костылей в ЭМУЛЯТОРЕ консоли для поддержки родного utf16, который внутри кишок винды сидит (даже ascii-функции все к нему же переводятся!) Странно...
По-моему, они вообще не развивали консоль дальше возможностей, присутствующих в «железном» текстовом режимие.

Хотя да, в потоках ввода-вывода можно использовать любую кодировку — хоть и utf-32 (big endian, low endian). А вот в самом сценарии работает лишь то, что можно смешивать с ASCII - национальные восьмибитки, utf-8. 
Например,
echo aı lʌv ju:nıkoʊd >>output.txt
в кодировке utf-16 превратится в чередованиe латинских букв с нулевыми байтами, а utf-8 не будет для данной команды ничем принципиально отличаться от ansi.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

myst

Цитата: Алексей Гринь от апреля 27, 2010, 18:47
Цитата: myst от апреля 27, 2010, 18:45
Что и? Ты ему скармливаешь строку в UTF-16, а он считывает только первый байт и успокаивается.
А можно было спроектировать не per ano. Если у эмулятора консоли можно изменить кодировку — то почему нельзя сделать так, чтобы при смене на utf16 он кушал по два байта?
Это ты у меня спрашиваешь? :o Наверное, потому что тяжёлое детство, деревянные иг C.

Алексей Гринь

Чтобы оставить совместимость и в то же время ввести новую фичу — есть кучи способов. В  Microsoft забили на консоли просто. Поэтому ставьте мону под Линукс, и там ваши поделия на C# заведутся без проблем ;)

Цитата: Python от апреля 27, 2010, 18:55
в кодировке utf-16 превратится в чередованиe латинских букв с нулевыми байтами, а utf-8 не будет для данной команды ничем принципиально отличаться от ansi.
А BOM на что?
肏! Τίς πέπορδε;

myst

Цитата: Python от апреля 27, 2010, 18:55
Хотя да, в потоках ввода-вывода можно использовать любую кодировку — хоть и utf-32 (big endian, low endian).
Каналы в ввода-вывода вообще не имеют кодировки. Это просто последовательность байтов. Как их интерпретировать — дело программы.

myst

Цитата: Алексей Гринь от апреля 27, 2010, 19:01
В  Microsoft забили на консоли просто.
Я скачал их эту, которая power. Она должна уметь уникод.

Python

Цитата: Алексей Гринь от апреля 27, 2010, 19:01
А BOM на что?
В utf-8 — по всей видимости, лишь для того, чтобы мешать. Начальная строка сценария, содержащая этот самый BOM, воспринимается как ошибочная, хотя можно либо убрать его вручную в более-менее примитивном редакторе, либо пропустить первую строку.
В утф-16, по всей видимости, то же самое, с той разницей, что он полностью несовместим с аѕсіі со всеми вытекающими последствиями.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

RawonaM

Вы знаете, что в настоящей кошерной консоли можно хоть картинки показывать?

Demetrius

Цитата: Python от апреля 27, 2010, 19:13
Цитата: Алексей Гринь от апреля 27, 2010, 19:01
А BOM на что?
В utf-8 — по всей видимости, лишь для того, чтобы мешать. Начальная строка сценария, содержащая этот самый BOM, воспринимается как ошибочная, хотя можно либо убрать его вручную в более-менее примитивном редакторе, либо пропустить первую строку.
В UTF-8 не может быть BOM. В UTF-8 та ваша последовательность символов не маркирует порядок байтов, следовательно, это не BOM, а велосипед.

Алексей Гринь

В utf8 он не нужен, да, ибо там порядок байт фикисиррованный (хотя позволяет чётко идентифицировать поток как utf8), но cmd.exe-таки и мог бы распознавать utf16-BOM в .bat'ах, чтобы верно перенастраиваться и не читать "как ansi" и не встречать "внезапных" null'ей. Я про это.

Цитата: Python от апреля 27, 2010, 18:55
Хотя да, в потоках ввода-вывода можно использовать любую кодировку — хоть и utf-32 (big endian, low endian). А вот в самом сценарии работает лишь то, что можно смешивать с ASCII - национальные восьмибитки, utf-8. 
Например,
Код: [Выделить]echo aı lʌv ju:nıkoʊd >>output.txtв кодировке utf-16 превратится в чередованиe латинских букв с нулевыми байтами, а utf-8 не будет для данной команды ничем принципиально отличаться от ansi.

Да и в принципе определять utf16 можно и без бома, просто посмотреть частнотность нулей через раз. Короче опять не "проблема" со всем. cmd.exe это не //command.com, он делался уже когда прикрутили уникод и прочий кошер.
肏! Τίς πέπορδε;

Python

Цитата: RawonaM от апреля 27, 2010, 19:16
Вы знаете, что в настоящей кошерной консоли можно хоть картинки показывать?
Если речь идет не о псевдографике, то тоже хочу себе такую)
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Алексей Гринь

肏! Τίς πέπορδε;

RawonaM

Цитата: Python от апреля 27, 2010, 19:18
Цитата: RawonaM от апреля 27, 2010, 19:16
Вы знаете, что в настоящей кошерной консоли можно хоть картинки показывать?
Если речь идет не о псевдографике, то тоже хочу себе такую)
Так в эмуляторе терминала в иксах есть, берите.
Вот например "текстовый" браузер:
(wiki/en) W3m

RawonaM

Цитата: Алексей Гринь от апреля 27, 2010, 19:21
Я смотрел видео в псевдографике :)
:D Где можно посмотреть?
Хочу "Аватар" в псевдографике.  :yes:

Алексей Гринь

Цитата: RawonaM от апреля 27, 2010, 19:28
Где можно посмотреть?
Хочу "Аватар" в псевдографике.  :yes:
Блин, уже точно не помню, в общем специальный плагин к какому-то проигрывателю... Было мегавырвиглазно (почему-то разрешение я не мог настроить), что-либо различить можно было если отойти от монитора и старательно вглядываться :)

Википедия:
ЦитироватьВ мультимедийном проигрывателе MPlayer существует поддержка aalib, позволяющая выводить видео в режиме ASCII. В оболочке для мультимедийного проигрывателя XINE, xine-ui также присутствует возможность смотреть видео в ASCII (для этого видео запускается через отдельную команду aaxine).

Вроде бы это.
肏! Τίς πέπορδε;

myst

Цитата: RawonaM от апреля 27, 2010, 19:16
Вы знаете, что в настоящей кошерной консоли можно хоть картинки показывать?
Ещё бы она существовала. Я видел, что там Линуксах, они тоже забили на консоль.

RawonaM

Цитата: myst от апреля 27, 2010, 20:29
Цитата: RawonaM от апреля 27, 2010, 19:16
Вы знаете, что в настоящей кошерной консоли можно хоть картинки показывать?
Ещё бы она существовала. Я видел, что там Линуксах, они тоже забили на консоль.
w3m же работает с графикой. Какие траблемы?

Видео в реальном текстовом режиме:






(этот смотреть в середине)


Идея ясна, но я уверен, что есть более красивые примеры.

Тайльнемер

Цитата: RawonaM от апреля 27, 2010, 22:57
Идея ясна, но я уверен, что есть более красивые примеры.
Зачем это нужно?
Какой смысл показывать картинки или видео в консоли? Я не вижу в этом ничего «кошерного», вижу только выпендрёж.

myst

Вот это извращение, вот это я понимаю. ;up:
Расскажите этим товарищам про фреймбуферную консоль.

Тайльнемер

Цитата: myst от апреля 28, 2010, 07:47;up:
:down:
Кстати, использование консоли для реализации графического интерфейса (например, FAR) — не меньшее извращение.

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр