Sono un principiante di Emacs e Clojure, testando il mio ambiente di lavoro con una semplice elaborazione di testo. Sto riscontrando problemi nel far sì che il REPL di Slime stampi correttamente il testo UTF-8 memorizzato in un vettore.Stampa di testo UTF-8 in melma REPL
ho iniziare leggendo il contenuto di un file (un dizionario di TB B) in un vettore:
user> (def toch
(with-open [rdr (java.io.BufferedReader.
(java.io.FileReader. "/directory/toch.txt"))]
(vec (line-seq rdr))))
=> #'user/toch
Allora provo ad ottenere una linea dal vettore, e ottengo spazzatura:
user> (toch 44)
=> " Examples : /// kektseñe akappi ste ‘the body is an impurity’ (121b5), akappī = BHS aśuciṃ (529a3). "
posso inserire la stringa nella Slime REPL e farlo ritornare come dovrebbe essere:
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). "
e C una stampa su disco senza problemi:
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). "]
E ottenere linee dal vettore da altri REPL (ad es. clj, lein repl) funziona anche bene. È solo quando provo a guardare il contenuto del vettore all'interno del REPL Slime che c'è qualche problema.
Cosa sta succedendo qui? C'è qualche errore di comunicazione tra Emacs e Swank? Come posso risolvere questo?
Strano. Qual è il risultato di '(int \ ṃ)' quando inserito in SLIME REPL? –
Questo mi dà '7747'. – nmashton
Poiché quella è la risposta corretta, ci deve essere qualcosa di sbagliato nel modo in cui il file viene letto. '((44) 91)' dovrebbe produrre '7747' pure. Se lo fa, allora questo problema è un mistero completo per me. Se, d'altra parte, non lo fa, allora è necessario controllare quale codifica assume Java durante la lettura del file. –