2012-02-16 12 views
5

मैं कुछ सरल पाठ प्रसंस्करण के साथ अपने कामकाजी माहौल का परीक्षण करते हुए, Emacs और Clojure दोनों का प्रारंभिक उपयोगकर्ता हूं। मुझे एक वेक्टर में संग्रहीत यूटीएफ -8 पाठ को सही ढंग से मुद्रित करने के लिए स्लीम आरईपीएल प्राप्त करने में समस्याएं आ रही हैं।कीचड़ में यूटीएफ -8 पाठ प्रिंटिंग REPL

मैं एक वेक्टर में एक फ़ाइल (Tocharian बी का एक शब्दकोश) की सामग्री से पढ़ना प्रारंभ:

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). " 

मैं स्लाइम आरईपीएल में स्ट्रिंग डाल सकते हैं और इसे वापस पाने के रूप में यह होना चाहिए:

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). "] 

और अन्य आरईपीएल से वेक्टर से लाइनें प्राप्त करना (उदा। clj, lein repl) भी ठीक काम करता है। यह केवल तभी होता है जब मैं स्लीम आरईपीएल के भीतर वेक्टर की सामग्री को देखने का प्रयास करता हूं कि कोई समस्या है।

यहां क्या हो रहा है? क्या Emacs और Swank के बीच कुछ गलत संचार है? मैं इसे कैसे ठीक करूं?

+0

अजीब। एसआईएलएमई आरईपीएल में प्रवेश करते समय '(int \ ṃ)' का नतीजा क्या है? –

+0

यह मुझे '7747' देता है। – nmashton

+0

चूंकि यह सही उत्तर है, फ़ाइल को पढ़ने के तरीके में कुछ गड़बड़ होनी चाहिए। '((टच 44) 91) '' 7747' भी पैदा करना चाहिए। अगर ऐसा होता है, तो यह मुद्दा मेरे लिए एक पूर्ण रहस्य है। यदि, दूसरी तरफ, ऐसा नहीं होता है, तो आपको फ़ाइल को पढ़ने के दौरान जावा को क्या एन्कोडिंग लगता है यह जांचने की आवश्यकता है। –

उत्तर

3

अपने .emacs फ़ाइल में

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

डाल (या स्थापित करने और M-x customize-variable के माध्यम से चर बचत) की कोशिश करें।

इसके अलावा, (यदि आप Un * x और Leiningen के प्रयोग पर कर रहे हैं, env LC_ALL=en_US.UTF-8 lein swank की तरह कुछ कोशिश) सुनिश्चित करें कि आप एक UTF-8-सक्षम स्थान के भीतर से Clojure चला रहे हैं।

+0

दुर्भाग्यवश, इनमें से कोई भी इसे ठीक नहीं करता है। मेरे पास पहले से ही slime-net-codeing-system utf-8-unix पर सेट था। स्वैंक सर्वर के लोकेल को बदलना कुछ भी नहीं बदला। – nmashton

+1

इस टैग ने मुझे बहुत मदद की – claj