unionx/slime-user-manual-cn — pull request #3 by muyinliu (2014-03-11 15:42:47+00:00)
Title: Swank dosen't have key "coding-system".

Swank dosen't have key "coding-system". Have to try another way to avoid character set encoding error, here is the code only for SBCL:
```
;;; To prevent charset encoding error.
(defun set-default-external-format (external-format)
"Usage: (set-default-external-format '(:UTF-8 :REPLACEMENT #\REPLACEMENT_CHARACTER))"
(assert (sb-impl::find-external-format external-format))
(setf sb-impl::*default-external-format* external-format)
(setf sb-alien::*default-c-string-external-format* external-format)
(with-output-to-string (*error-output*)
(setf sb-sys:*stdin*
(sb-sys:make-fd-stream 0 :name "standard input" :input t :buffering :line))
(setf sb-sys:*stdout*
(sb-sys:make-fd-stream 1 :name "standard output" :output t :buffering :line))
(setf sb-sys:*stderr*
(sb-sys:make-fd-stream 2 :name "standard error" :output t :buffering :line))
(setf sb-sys:*tty* (make-two-way-stream sb-sys:*stdin* sb-sys:*stdout*))
(princ (get-output-stream-string *error-output*) sb-sys:*stderr*))
(values))
(set-default-external-format :utf-8)
```

ssh is better to run in the background. So the better command is:
```
ssh -N -f -L 4005:127.0.0.1:4005 username@remote.example.com
```
NOTE:
-N to tell ssh "this is only for port redirect, not for more command"
-f to tell ssh "run in the background"