2012-10-05 35 views
5

में यूनिकोड वर्णों की एक सूची जेनरेट करें, मैं यूनिकोड वर्ण की संख्या के रूप में लूप के लिए काउंटर का उपयोग करने की सूची बनाने की कोशिश कर रहा हूं। इसका उद्देश्य, ... बस कहना है कि मैं इसे मजाक के लिए कर रहा हूं। निश्चित रूप से, एक अनुभवी जावास्क्रिप्ट उपयोगकर्ता मुझे यह बताने में सक्षम होगा कि यहां क्या गलत है।लूप

जावास्क्रिप्ट में एक यूनिकोड वर्ण का उपयोग करने के लिए कोई इसे या तो टाइप कर सकता है, या बचने के अनुक्रम का उपयोग कर सकता है: \u8211। मेरी समस्या तब उत्पन्न होती है जब मैं भागने वाले भाग के साथ संख्या भाग को गठबंधन करने का प्रयास करता हूं। मुझे जो त्रुटि मिलती है वह "खराब बचने वाले चरित्र" की रेखाओं के साथ कुछ है, और इसका मतलब है कि i वैरिएबल की संख्या \ u के साथ संयुक्त नहीं है जैसा कि मैं उम्मीद कर रहा हूं।

for (var i=65; i< 90; i++) {           
    anchor = document.createElement('a'), 
    img = document.createElement('img'), 
    character = "\\u"+i; 
    img.setAttribute('alt', character); 
    img.setAttribute('src', ''); 

    anchor.appendChild(document.createTextNode(i +": ")); 
    anchor.appendChild(img); 

    anchor.setAttribute('title', character); 
    body.appendChild(anchor); 
    body.appendChild(document.createElement('br')); 
} 

मैं क्या कोशिश की है:

character = "\u{"+i+"}" 

cha = ['\\u']; 
cha.push(i); 
cha.join(''); 

... और मैं विचारों

एक उदाहरण से बाहर हुई:

jsfiddle.net/Dn4Vv/

+1

कैसे उपयोग करने के बारे [ 'fromCharCode'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/fromCharCode) ''\ u' + i' को आजमाने की बजाय। –

+0

मैंने वास्तव में जावास्क्रिप्ट एपीआई का अध्ययन नहीं किया है। धन्यवाद। –

+0

☞ बस इस फ़ंक्शन को हेक्स संख्याओं के दो जोड़े खिलाएं: [फिर भी एक और जावास्क्रिप्ट यूनिकोड एनकोड/डिकोड] (http://icompile.eladkarako.com/yet-another-javascript-unicode-encodedecode/) मज़ेदार है! ☕ –

उत्तर

6

सबसे बड़ी समस्या यह है कि \uXXXX समय है कि कोड पार्स किया गया है पर व्याख्या की है है, केवल आपके नहीं '"' + '"'"" रूप में एक ही मतलब है (क्योंकि " कोड में एक वास्तविक दोहरे-उद्धरण है, जबकि '"' एक स्ट्रिंग " युक्त) लिखते हैं, आप '\\u' + 'XXXX' नहीं लिख सकते हैं '\uXXXX' रूप में एक ही मतलब करने के लिए कर सकते हैं के रूप में ।

ब्रैड क्रिस्टी ने एक टिप्पणी में कहते हैं ऊपर के रूप में, आप the function String.fromCharCode का उपयोग एक पूर्णांक से चरित्र आप की जरूरत करने के लिए कन्वर्ट करने के लिए करना चाहिए:

character = String.fromCharCode(i); 

एक दूसरी समस्या — इस से ऊपर की वजह से, शैक्षिक है, लेकिन मैं लगता है कि मैं यह — कि \uXXXX अंकन उम्मीद चरित्र कोड में हेक्साडेसिमल अंकन दिए जाने की है उल्लेख करना चाहिए, और ठीक चार हेक्साडेसिमल अंक के लिए शून्य गद्देदार, जबकि आप में दशमलव अंकन यह कर रहे हैं और शून्य के बिना गद्दी। उदाहरण के लिए, आप \u65 लिख रहे हैं, लेकिन A के लिए यूनिकोड-एस्केप सिंटैक्स वास्तव में \u0041 है। इस तरह

+0

गैर-गद्देदार पूर्णांक को स्पष्ट रूप से दशमलव के रूप में व्याख्या किया जाता है (कम से कम node.js और फ़ायरफ़ॉक्स में जो कुछ भी है)। कोड में आश्चर्यचकित कारक को कम से कम रखने का यह एक अच्छा उदाहरण है, मुझे नहीं लगता कि यह एक समस्या है। जवाब के लिए धन्यवाद। –

0

इस प्रयास करें: String.fromCharCode(i);

0
character = String.fromCharCode(i); // works for me 
-1

कोशिश कुछ:

<script language=Javascript> 
charCode=2665; 
uc='"\\u' + charCode +'"'; 
document.write('<a title="' + charCode + '">' + eval(uc) + '</a>'); 
</script>