5

我是 Emacs 和 Clojure 的初学者,用一些简单的文本处理来测试我的工作环境。我在让 Slime REPL 正确打印存储在向量中的 UTF-8 文本时遇到问题。

我首先将文件(吐火罗 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 之间是否存在一些误解?我怎样才能解决这个问题?

4

1 回答 1

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)。

于 2012-02-16T17:34:12.023 回答