5

私はEmacsとClojureの両方の初心者ユーザーであり、いくつかの簡単なテキスト処理で作業環境をテストしています。ベクトルに格納されているUTF-8テキストをSlimeREPLで正しく印刷するのに問題があります。

まず、ファイル(トカラ語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). "

文字列をSlimeREPLに入力して、元の状態に戻すことができます。

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など)からのベクトルから行を取得することもできます。問題があるのは、SlimeREPL内のベクトルの内容を調べようとしたときだけです。

何が起きてる?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 に答える