2012-05-15 14 views
5

के साथ मुझे उन में सिरिलिक वर्णों के साथ बाइनरी का उपयोग करने में सक्षम होना चाहिए। मैंने बस <<"абвгд">> लिखने की कोशिश की लेकिन मुझे बैडग त्रुटि मिली।एरिलैंग और बाइनरी साइरिलिक

मैं एरलांग में सिरिलिक (या यूनिकोड) तारों के साथ कैसे काम कर सकता हूं?

+1

क्या यह किसी भी मदद से है: http://www.erlang.org/doc/apps/stdlib/unicode_usage.html – NPE

उत्तर

12

यदि आप उपरोक्त अभिव्यक्ति को erlang shell में इनपुट करना चाहते हैं, तो कृपया unicode मॉड्यूल उपयोगकर्ता पुस्तिका पढ़ें। फ़ंक्शन character_to_binary, और character_to_list दोनों रिवर्स करने योग्य फ़ंक्शन हैं।

([email protected])37> io:getopts(). 
[{expand_fun,#Fun<group.0.33302583>}, 
{echo,true}, 
{binary,false}, 
{encoding,unicode}] 

([email protected])40> A = unicode:characters_to_binary("上海"). 
<<228,184,138,230,181,183>> 

([email protected])41> unicode:characters_to_list(A). 
[19978,28023] 

([email protected])45> io:format("~s~n",[ unicode:characters_to_list(A,utf8)]). 
** exception error: bad argument 
    in function io:format/3 
     called as io:format(<0.30.0>,"~s~n",[[19978,28023]]) 

([email protected])46> io:format("~ts~n",[ unicode:characters_to_list(A,utf8)]). 
上海 
ok 

आप स्रोत कोड में सीधे unicode:characters_to_binary("上海"). उपयोग करना चाहते हैं, यह एक छोटे से अधिक जटिल है: निम्नलिखित एक उदाहरण है। अंतर खोजने के लिए आप इसे पहले कोशिश कर सकते हैं।

6

एरलांग कंपाइलर आईएसओ -885 9 -1 एन्कोडेड टेक्स्ट के रूप में कोड की व्याख्या करेगा, जो आपको लैटिन वर्णों तक सीमित करता है। यद्यपि आप कुछ आईएसओ अक्षरों में बैंग करने में सक्षम हो सकते हैं, जो यूनिकोड में वही बाइट प्रतिनिधित्व हो सकते हैं, यह एक बहुत अच्छा विचार नहीं है।

आप यह सुनिश्चित करना चाहते हैं कि आपका संपादक आईएसओ -885 9 -1 पढ़ता और लिखता है, और आप जितना संभव हो सके साक्षर का उपयोग करना टालना चाहते हैं। फाइलों से इन स्ट्रिंग्स स्रोत।

संबंधित मुद्दे