在粘液REPL中打印UTF-8文本

时间:2012-02-16 16:15:25

标签: emacs utf-8 clojure slime swank-clojure

我是Emacs和Clojure的初级用户,通过一些简单的文本处理来测试我的工作环境。我在获取Slime REPL以正确打印存储在矢量中的UTF-8文本时遇到了问题。

我首先将文件(Tocharian B的字典)的内容读入矢量:

user> (def toch
        (with-open [rdr (java.io.BufferedReader.
                         (java.io.FileReader. "/directory/toch.txt"))]
          (vec (line-seq rdr))))
=> #'user/toch

然后我尝试从矢量中获取一行,然后我得到垃圾:

user> (toch 44)
=> " Examples :   /// kektseñe akappi ste ‘the body is an impurity’ (121b5), akappī = BHS aśuciṃ (529a3). "

我可以将字符串输入Slime REPL并将其恢复原样:

user> " Examples :   /// kektseñe akappi ste ‘the body is an impurity’ (121b5), akappī = BHS aśuciṃ (529a3). "
=> " Examples :   /// kektseñe akappi ste ‘the body is an impurity’ (121b5), akappī = BHS aśuciṃ (529a3). "

我可以毫无问题地打印到磁盘:

user> (binding [*out* (java.io.FileWriter. "test.txt")]
        (prn (toch 44)))
=> nil
[Contents of test.txt: " Examples :   /// kektseñe akappi ste ‘the body is an impurity’ (121b5), akappī = BHS aśuciṃ (529a3). "]

从其他REPL(例如clj,lein repl)的向量中获取行也可以正常工作。只有当我试图在Slime REPL中查看向量的内容时才会出现任何问题。

这里发生了什么? Emacs和Swank之间是否存在误解?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

尝试放

(setq slime-net-coding-system 'utf-8-unix)

进入.emacs文件(或通过M-x customize-variable设置和保存变量)。

此外,请确保您在启用UTF-8的区域设置中运行Clojure(如果您使用的是Un * x并使用Leiningen,请尝试类似env LC_ALL=en_US.UTF-8 lein swank)。