Когда Emacs записывает вывод процесса непосредственно в многобайтовый буфер,
он декодирует вывод в соответствии с системой кодирования вывода процесса.
Если система кодирования — raw-text или no-conversion, Emacs
преобразует однобайтовый вывод в многобайтовый с помощью
string-to-multibyte и вставляет полученный многобайтовый текст.
Вы можете использовать set-process-coding-system, чтобы указать, какую систему
кодирования использовать (см. Информация о процессе). В противном
случае система кодирования берется из coding-system-for-read, если она не равна
nil; или из механизма по умолчанию (см. Системы кодирования по умолчанию).
Если текстовый вывод процесса содержит нулевые байты, Emacs по умолчанию использует no-conversion;
см. inhibit-null-byte-detection, чтобы узнать, как контролировать это поведение.
Предупреждение: Системы кодирования, такие как undecided, которые
определяют систему кодирования на основе данных, не работают полностью надежно с асинхронным выводом
подпроцессов. Это связано с тем, что Emacs должен обрабатывать асинхронный вывод подпроцесса порциями,
по мере его поступления. Emacs должен пытаться определить правильную систему кодирования для каждой
порции, и это не всегда срабатывает. Поэтому, если это возможно, укажите систему кодирования, которая
определяет как преобразование кодовой точки символа, так и преобразование конца строки — то есть, такую, как
latin-1-unix, а не undecided или latin-1.
Когда Emacs вызывает функцию фильтрации процесса, он предоставляет вывод процесса как многобайтовую
строку или как однобайтовую строку в соответствии с системой кодирования фильтра процесса. Emacs
декодирует вывод в соответствии с системой кодирования вывода процесса, которая обычно создает
многобайтовую строку, за исключением таких систем кодирования, как binary и
raw-text.