Emacs Lisp: how to set encoding for call-process
- by RamyenHead
I thought I knew how to set coding-system (or encoding): use process-coding-system-alist. Apparently, it's not working.
;; -*- coding: utf-8 -*-
(require 'cl)
(let
((process-coding-system-alist '("cygwin/bin/bash" . (utf-8-dos . utf-8-unix))))
(setq my-words (list "Lilo" "?_?" "_?" "?_" "?" "Stitch")
my-cygwin-bash "C:/cygwin/bin/bash.exe"
my-outbuf (get-buffer-create "*my cygwin bash echo test*")
)
(with-current-buffer my-outbuf
(goto-char (point-max))
(loop for word in my-words do
(insert (concat "echo " word "\n"))
(call-process my-cygwin-bash nil my-outbuf nil "-c" (concat "echo " word)))
)
(display-buffer my-outbuf)
)
Running the above code, the output is this:
echo Lilo
Lilo
echo ?_?
/usr/bin/bash: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/bash: -c: line 1: syntax error: unexpected end of file
echo _?
/usr/bin/bash: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/bash: -c: line 1: syntax error: unexpected end of file
echo ?_
/usr/bin/bash: $'echo \346\267\205?': command not found
echo ?
/usr/bin/bash: -c: line 0: unexpected EOF while looking for matching `"'
/usr/bin/bash: -c: line 1: syntax error: unexpected end of file
echo Stitch
Stitch
Anything sent to cygwin in unicode is failing (MS Windows, Korean).