Word8 — перевод кодировки ByteString в Conduit

Я пытаюсь заставить клиент telnet работать как побочный проект, и я увидел этот суть как базовый пример. Однако когда я компилирую и запускаю его в ghci, вы видите, что кодировки искажаются. Вот отсылка к персонажам:

���� ��#��'

Я предполагаю, что это связано с тем, что Conduit по умолчанию использует UTF-8 для всех передач, когда telnet использует 7. -bit ASCII / специальный бит telnet для кодов. Кроме того, сможет ли стандартный вывод / терминал напрямую интерпретировать UTF-8 без каких-либо преобразований?

Заранее спасибо!


person Athan Clark    schedule 22.03.2014    source источник


Ответы (1)


conduit не делает никаких предположений о кодировке символов, все функции, которые вы используете из этой сути, работают исключительно на двоичном уровне. Похоже, что сервер telnet, к которому вы подключаетесь, (что неудивительно) отправляет данные, отличные от ASCII, в виде специальных команд, и вы отправляете их непосредственно на терминал, который не имеет возможности их отобразить.

person Michael Snoyman    schedule 23.03.2014
comment
Понятно, я думал об использовании некоторых функций в Data.Text.Encoding, меня особенно интересовала decodeASCII — я просто надеюсь, что она отбрасывает все, что использует дополнительный бит. Я собираюсь еще немного покопаться, но это определенно на правильном пути. Благодарю вас! - person Athan Clark; 24.03.2014
comment
Это, вероятно, глупый вопрос, и на самом деле это не ваше назначение, но знаете ли вы, согласовывает ли терминал, какую кодировку он ожидает, с программой или каналом? Мне просто интересно, какая кодировка по умолчанию. Я предполагаю, что это UTF-8 или что-то, что позволяет использовать странные символы. - person Athan Clark; 24.03.2014
comment
Я вижу, что Data.Conduit.Text проделал некоторую работу, однако я все еще не думаю, что этого будет достаточно (к сожалению). Я все еще возюсь, я сообщу вам о любых обновлениях или запросах на добавление для специального перевода кодировки. Как вы думаете, может ли быть инфраструктура, подобная Conduit, для передачи данных между узлами, но с учетом кодирования? Может с переводами и доступными кодировками? Возможно, таким образом, большее количество сопоставлений типов данных может выполняться автоматически. Назовите это штепселем, ха-ха. - person Athan Clark; 24.03.2014