Вывод процесса декодирования
Когда 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.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Decoding-Output.html