2012-04-16 9 views
7

Anche se ho impostato UTF-8 ovunque (nel mio progetto , nella personalizzazione del gruppo slime-lisp, nel buffer Emacs stesso ...), continuo a ricevere questo errore quando provo a eseguire codice come (def beta "β"):Impossibile inviare caratteri divertenti a SLIME

Coding system iso-latin-1-unix not suitable [...] 

avviene solo in Emacs, non durante l'esecuzione lein repl dalla riga di comando, per esempio.

Che cosa potrebbe causare? Sto usando Ubuntu, se questo fa alcuna differenza.

+0

a proposito. .. Il file * .clj * ha una codifica di caratteri specificata che ogni file * .clj * deve usare? Ad esempio, le specifiche della lingua Go di Google dicono che ogni file di codice sorgente * deve * essere UTF-8 mentre Java non specifica nulla (puoi usare UTF-8 o ISO-8859-1 o quello che vuoi per * .java * codice sorgente File). Che dire del file * .clj *? – TacticalCoder

+0

Il file di caricamento incorporato 'fn 'gira qualsiasi cosa, quindi non la penso così ... – vemv

+1

Tutti i file .clj devono essere in UTF-8. Questo non è documentato ovunque (sfortunatamente), ma è codificato nel compilatore: https://github.com/clojure/clojure/blob/3297866c23dd01a5b0db14ed836336d128972aac/src/jvm/clojure/lang/Compiler.java#L6912 – raek

risposta

6

si dovrebbe avere seguente codice nel tuo .emacs:

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

e seguendo nella vostra project.clj quando si esegue lein swank (o Imposta swank.encoding proprietà di sistema Java per utf-8):

:encoding "utf-8" 
+0

': la codifica" utf-8 "' ha fatto la differenza per me; Stavo usando ': jvm-opts [" -Dfile.encoding = utf-8 "]' invece. Grazie! – vemv