2012-12-13 15 views
7

किसी कारण से यूनिकोड तार Rhino, Mozilla's JavaScript engine में ठीक से व्यवहार नहीं करते हैं। अगर मैं आरईपीएल में यूनिकोड टेक्स्ट दर्ज करता हूं, या इसे कुशलतापूर्वक जोड़ता हूं, तो यह वापस लौटता है।राइनो में यूनिकोड

js> 'тотальная киборгизация' 
B>B0;L=0O :81>@3870F8O 

ASCII वर्ण ठीक काम करते हैं।

js> 'reprap for everyone' 
reprap for everyone 

यूनिक्स भी काम ठीक आदेश:

$ echo 'тотальная киборгизация' 
тотальная киборгизация 

JVM उत्पादन भी ठीक है, चल रहा class Test { public static void main(String[] args) { System.out.println("тотальная киборгизация"); } } सही ढंग से आउटपुट सिरिलिक।

जावा और राइनो संस्करण हैं:

$ java -version 
java version "1.7.0_09" 
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1) 
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode) 
$ rhino 
Rhino 1.7 release 3 2012 05 18 

स्थलों:

$ echo $LC_TYPE 

$ echo $LANG 
en_US.UTF-8 

LC_ALLen_US.UTF-8 को बदलने में मदद नहीं करता।

क्या इस समस्या को इस StackOverflow प्रश्न, Javascript using UCS-2 के साथ करना है?

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

+0

मुझे एक ही समस्या नहीं दिख रही है। मैं 'राइनो 1.7 रिलीज 2 200 03 22' और 'जावा संस्करण" 1.6.0_26 "' 'जावा (टीएम) एसई रनटाइम पर्यावरण (1.6.0_26-बी03-384-9 एम 3425 का निर्माण)' जावा हॉटस्पॉट (टीएम) का उपयोग कर रहा हूं मैक ओएस एक्स 10.5.8 पर 64-बिट सर्वर वीएम (20.1-बी 022-384, मिश्रित मोड का निर्माण)। –

+1

पर्यावरण से राइनो को खत्म करने का प्रयास करें। क्या होता है जब आप यूनिक्स कमांड लाइन को आदेश देते हैं, 'echo' тотальная киборгизация'', राइनो चलाने के बिना? –

+1

नियंत्रण वर्णों के लिए लेखांकन के बाद आपको प्राप्त होने वाला आउटपुट वास्तव में यूटीएफ -16 है, यूटीएफ -8 नहीं। (यह देखते हुए, सादा ASCII काम असाधारण है।) आप इस जावा को संकलित करने और चलाने के लिए प्रयास कर सकते हैं यह देखने के लिए कि वीएम की सेटिंग्स को दोषी ठहराया गया है: 'कक्षा परीक्षण { सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) { System.out.println ("тотальная киборгизация"); } } ' – psmay

उत्तर

1

यह वास्तव में ध्यान दिया जाना चाहिए कि जावास्क्रिप्ट वास्तव में यूनिकोड को ठीक से संभाल नहीं लेता क्योंकि यह यूटीएफ 16 की भविष्यवाणी करता है। (यह एक और 16 बिट एन्कोडिंग सिस्टम का उपयोग करता है जो समान है, लेकिन निश्चित रूप से वही नहीं है।)

यह writeup explains the problem in well and provides libraries and workarounds

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