我是 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 之间是否存在一些误解?我怎样才能解决这个问题?