2012-04-16 16 views
7

Mặc dù tôi đặt UTF-8 ở mọi nơi (trong dự án lein, tuỳ chỉnh nhóm slime-lisp, bộ đệm Emacs ...), tôi vẫn gặp lỗi này khi cố gắng chạy mã như (def beta "β"):Không thể gửi các ký tự hài hước đến SLIME

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

xảy ra chỉ trong Emacs, không phải khi chạy lein repl từ dòng lệnh, ví dụ.

Điều gì có thể gây ra? Tôi đang sử dụng Ubuntu, nếu điều đó tạo ra bất kỳ sự khác biệt nào.

+0

bằng cách này. .. Tệp * .clj * có mã hóa ký tự được chỉ định rằng mọi tệp * .clj * đều phải sử dụng không? Ví dụ: thông số ngôn ngữ Go của Google cho biết mọi tệp mã nguồn * phải * là UTF-8 trong khi Java không chỉ định bất kỳ thứ gì (bạn có thể sử dụng UTF-8 hoặc ISO-8859-1 hoặc những gì bạn muốn cho * .java * mã nguồn các tập tin). Điều gì về * .clj * tập tin? – TacticalCoder

+0

Tập tin «load-file' được tích hợp sẵn bất kỳ thứ gì nên tôi không nghĩ vậy ... – vemv

+1

Tất cả các tệp .clj phải ở dạng UTF-8. Đây không phải là tài liệu ở bất cứ đâu (không may), nhưng nó được mã hóa cứng vào trình biên dịch: https://github.com/clojure/clojure/blob/3297866c23dd01a5b0db14ed836336d128972aac/src/jvm/clojure/lang/Compiler.java#L6912 – raek

Trả lời

6

bạn nên có đoạn mã sau vào .emacs của bạn:

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

và sau trong project.clj của bạn khi bạn chạy lein swank (hoặc thiết lập swank.encoding Java sở hữu hệ thống để utf-8):

:encoding "utf-8" 
+0

': mã hóa" utf-8 "' tạo sự khác biệt cho tôi; Tôi đã sử dụng ': jvm-opts [" -Dfile.encoding = utf-8 "]' để thay thế. Cảm ơn bạn! – vemv