Прочитал статью, не понял, что не так, прочитал комменты, снова не понял. Сижу смотрю на это и это и думаю, в чём проблема-то. Потом догадался открыть в дефолтном браузере, где эта цветная параша в тексте не исправлена.
Всякие смыйлы туда вообще класть не надо, такое должно быть картинками.
Вот согласен. Текст должен оставаться текстом. Можно воткнуть всякие символы, которые вполне понятны и в обычном монохромном представлении (как текст — background и foreground), а цветам место не в кодировке текста, а в чём-то внешнем.
Да потому, что нельзя без
перебора сообщения по байтикам понять ничего про это сообщение, нельзя взять и переставить символы, нельзя отрезать один символ, ничего нельзя пока не копаясь в байтиках.
А вообще, конечно, юникод недостаточно гибок, ему недостаёт поддержки иерархических структур. Довольно сложно простым объединением символов описать, например, пять красных прямых линий с указанием индивидуальных особенностей каждой.
Ходил. Вот Вы, видимо, никогда не пользовались пайпами в Питоне.
Эта самая встроенная библиотека, которая «import pipes», просто не позволяет задать тип «wb». У неё в исходнике захардкожен исключительно «w». Т.е. текстовый пайп. Соответственно, в UTF-8.
не могу сейчас ответить аргументировано, но есть подозрение, что эта библиотека просто не предназначена для работы с бинарными файлами, т.е. ты пытаешься ее использовать не по назначению. что можно делать с бинарными данными в пайпах?? могу только посоветовать использовать uuencode/uudecode. у меня по этой теме ничего не гуглится - видимо, не очень популярная хотелка среди юзеров пихтона
Бинарные пайпы в юниксах вполне себе существуют и применяются для работы с бинарными данными. Например, для передачи архивов, картинок, видео, музыки,... и т.д.
В чистом bash'е можно легко сделать, например, так:
tar Oxvf archive.tar.xz file.mp4 | ffmpeg -i - newgif.gif
(файл file.mp4 будет извлечён из архива archive.tar.xz, а затем передан ffmpeg'у, который сконвертирует его в гифку; да, это можно и через временные файлы делать, но зачем тогда пайпы?)
В общем, для линуксоидов бинарные пайпы must have. А скриптовые языки наподобие Perl'а, Ruby и Python'а изначально предполагаются как более удобные и более функциональные заменители bash'а. Но, вот, в случае с Python'ом как-то не совсем это получается.
Да, у меня есть мой костыль, но и он предполагает, что у скрипта уже есть данные, которые нужно передать дальше.
Проблема не в питоне а в том, что юникодный комитет окончательно поехал крышей и решил запилить восьмибайтные символы, которые невозможно отличить от пары четырехбайтных.
Хз что с этим делать, но понятие кодировки они сломали.
Переворачивать строки может потребоваться по разным причинам.
Например, чтобы откусить что-нибудь от строки с другой стороны, а потом опять перевернуть обратно. Например, простой способ получить список установленных rpm-пакетов в bash'е выглядит так:
rpm -qa | rev | cut -d- -f 3- | rev
Тут суть в том, что имена пакетов тоже могут содержать символ '-', и заранее неизвестно сколько их в каком имени пакета. Поэтому проще откусить пару полей с конца. Но отсчёт полей начинается с начала.
Универсальность, отсутствие необходимости в нетрадиционных сексуальных отношениях с настройками локали и шрифтов для нормального отображения писменности, отличной от латинской важнее, чем переворот символов.