Tôi là người dùng đầu của cả Emacs và Clojure, kiểm tra môi trường làm việc của tôi với một số xử lý văn bản đơn giản. Tôi gặp sự cố khi tải Slime REPL để in văn bản UTF-8 được lưu trữ trong một vectơ đúng cách.In văn bản UTF-8 trong chất nhờn REPL
tôi bắt đầu bằng cách đọc nội dung của một tập tin (một cuốn từ điển của Tocharian B) vào một vector:
user> (def toch
(with-open [rdr (java.io.BufferedReader.
(java.io.FileReader. "/directory/toch.txt"))]
(vec (line-seq rdr))))
=> #'user/toch
sau đó tôi cố gắng để có được một đường từ vector, và tôi nhận được rác:
user> (toch 44)
=> " Examples : /// kektseñe akappi ste ‘the body is an impurity’ (121b5), akappī = BHS aśuciṃ (529a3). "
tôi có thể nhập vào chuỗi vào Slime REPL và làm cho nó trở lại như nó phải được:
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). "
và tôi c bản in ra đĩa mà không có bất kỳ sự cố nào:
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). "]
Và nhận các dòng từ véc tơ từ các REPL khác (ví dụ: clj, lein repl) cũng hoạt động tốt. Chỉ khi tôi cố xem xét nội dung của vectơ trong Slime REPL thì có vấn đề.
Điều gì đang xảy ra ở đây? Có một số thông tin sai lạc giữa Emacs và Swank không? Làm thế nào tôi có thể sửa lỗi này?
Lạ. Kết quả của '(int \ ṃ)' khi được nhập vào REPIME SLIME là gì? –
Điều đó mang lại cho tôi '7747'. – nmashton
Vì đó là câu trả lời đúng, phải có điều gì đó sai với cách đọc tệp. '((toch 44) 91)' cũng mang lại '7747'. Nếu có, thì vấn đề này là một bí ẩn hoàn toàn đối với tôi. Nếu, mặt khác, nó không, sau đó bạn cần phải kiểm tra những gì Java mã hóa giả định khi đọc các tập tin. –