Печать текста UTF-8 в слизи REPL - PullRequest
5 голосов
/ 16 февраля 2012

Я начинающий пользователь Emacs и Clojure, тестирую свою рабочую среду с помощью простой обработки текста. У меня проблемы с получением Replay Slime для правильной печати текста 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). "

Я могу ввести строку в 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) также работает нормально. Только когда я пытаюсь посмотреть содержимое вектора в REPL слизи, возникает какая-то проблема.

Что здесь происходит? Есть ли какое-то недопонимание между Emacs и Swank? Как я могу это исправить?

1 Ответ

3 голосов
/ 16 февраля 2012

Попробуйте вставить

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

в файл .emacs (или установите и сохраните переменную с помощью M-x customize-variable).

Кроме того, убедитесь, что вы запускаете Clojure изв локали с поддержкой UTF-8 (если вы используете Un * x и используете Leiningen, попробуйте что-то вроде env LC_ALL=en_US.UTF-8 lein swank).

...