जावास्क्रिप्ट में यूनिकोड चरित्र डालें


134

मुझे अपने html पेज पर ओमेगा (Ω) डालने की आवश्यकता है। मैं ऐसा करने के लिए अपने HTML से बच गए कोड का उपयोग कर रहा हूं, इसलिए मैं लिख सकता हूं Ωऔर es प्राप्त कर सकता हूं । यह सब ठीक है और अच्छी तरह से जब मैं इसे एक HTML तत्व में डाल दिया; हालाँकि, जब मैं इसे अपने जेएस में डालने की कोशिश करता हूं, उदाहरण के लिए var Omega = Ω, यह उस कोड को जेएस के रूप में पार्स करता है और पूरी चीज काम नहीं करती है। किसी को पता है कि इस बारे में कैसे जाना है?


15
var Omega = "Ω";बहुत आसान?
गाढ़ा बंदर

6
नोटपैड यह स्वीकार नहीं करता है, यह सिर्फ एक ओ: पी
ब्लूफ़ायर

13
@MikeMcCaughan हाँ, लेकिन अगर स्रोत फ़ाइल के एन्कोडिंग के साथ कोई अन्य डेवलपर गड़बड़ करता है, तो आप हार गए हैं ... आपके पास हमेशा कोई कहने वाला होगा "OOOOps मुझे नहीं पता था कि <सॉफ्टवेयर के लिए प्लेसहोल्डर> डिफ़ॉल्ट एन्कोडिंग के रूप में CP1250 का उपयोग करता है और मैं "या चरित्र enco- क्या?" ; =)
शमूएल रॉसिल

3
@Bluefire एक बेहतर टेक्स्ट एडिटर पर स्विच करता है जो कैरेक्टर एन्कोडिंग (जैसे नोटपैड ++) को सेट करने के लिए सपोर्ट करता है और इसे UTF-8 में सेट करता है। फिर आप अपने सोर्स कोड में चिनैसी लिख सकते हैं यदि आप चाहें ... या मेरी पहली टिप्पणी द्वारा लक्षित पीपीएल की श्रेणी में रहें; =) en.wikipedia.org/wiki/Character_encoding
शमूएल रॉसिल

4
@ ब्ल्यूफ़ायर, नोटपैड ++ को इसे ठीक से संभालना चाहिए, आपको बस मेनू में एन्कोडिंग को UTF-8 या UCS-2 में बदलना होगा।
गाढ़ा बंदर

जवाबों:


197

मैं अनुमान लगा रहा हूं कि आप वास्तव में एक अपरकेस ओमेगा युक्त स्ट्रिंगOmega होना चाहते हैं ? उस मामले में, आप लिख सकते हैं:

var Omega = '\u03A9';

(क्योंकि Ω है कोडपॉइंट U + 03A9 साथ यूनिकोड वर्ण हैं, अर्थात, 03A9है 937। छोड़कर चार हेक्साडेसिमल अंक के रूप में लिखा,)


4
और अगर कोई यह जानना चाहता है कि यूनिकोड स्ट्रिंग के लिए हेक्साडेसिमल मान क्या है: mothereff.in/js-escapes
StanE

जावास्क्रिप्ट के भीतर से एक यूनिकोड स्ट्रिंग के लिए हेक्साडेसिमल मान प्राप्त करने का एक और तरीका है: "the" .codePointAt (0) .toString (16);
कोस्टाक्स

53

हालाँकि @ruakh ने एक अच्छा जवाब दिया, मैं पूर्णता के लिए कुछ विकल्प जोड़ूंगा:

आप वास्तव var Omega = '&#937;'में जावास्क्रिप्ट में भी उपयोग कर सकते हैं , लेकिन केवल अगर आपका जावास्क्रिप्ट कोड है:

  • एक ईवेंट विशेषता के अंदर, जैसा कि onclick="var Omega = '&#937'; alert(Omega)"या में
  • scriptXML सामग्री प्रकार के साथ एक XHTML (या XHTML + XML) दस्तावेज़ के अंदर एक तत्व।

इन मामलों में, कोड पहले (जावास्क्रिप्ट दुभाषिया के पास होने से पहले) एक HTML पार्सर द्वारा पार्स किया जाएगा ताकि चरित्र संदर्भों &#937;को पहचाना जाए। प्रतिबंध ज्यादातर मामलों में यह एक अव्यवहारिक तरीका है।

आप Ω वर्ण भी दर्ज कर सकते हैं, जैसे कि var Omega = 'Ω', लेकिन फिर वर्ण एन्कोडिंग की अनुमति होनी चाहिए, एन्कोडिंग को ठीक से घोषित किया जाना चाहिए, और आपको ऐसे सॉफ़्टवेयर की आवश्यकता होगी जो आपको ऐसे वर्णों में प्रवेश करने दें। यदि आप UTF-8 एन्कोडिंग का उपयोग हर चीज के लिए करते हैं और इसके द्वारा बनाए गए मुद्दों से निपटने के लिए तैयार हैं तो यह एक स्वच्छ समाधान और काफी संभव है। स्रोत कोड पठनीय होगा, और इसे पढ़ते हुए, आप तुरंत कोड नोटेशन के बजाय, चरित्र को खुद ही देख लेंगे। दूसरी ओर, यह आश्चर्य का कारण हो सकता है यदि अन्य लोग आपके कोड के साथ काम करना शुरू कर दें।

\uसंकेतन का उपयोग करते हुए , जैसा कि var Omega = '\u03A9', वर्ण एन्कोडिंग के स्वतंत्र रूप से काम करता है, और यह व्यवहार में लगभग सार्वभौमिक है। हालांकि इसे केवल यू + एफएफएफएफ तक ही इस्तेमाल किया जा सकता है, यानी \uffffज्यादातर ऐसे पात्र जिन्हें ज्यादातर लोगों ने उस क्षेत्र में गिरने के बारे में सुना है। (यदि आपको "उच्च" वर्णों की आवश्यकता है, तो आपको सरोगेट जोड़े या उपरोक्त दो दृष्टिकोणों में से एक का उपयोग करने की आवश्यकता है।)

आप String.fromCharCode()विधि का उपयोग करके एक चरित्र का निर्माण भी कर सकते हैं , एक पैरामीटर के रूप में यूनिकोड संख्या, दशमलव में var Omega = String.fromCharCode(937)या में हेक्साडेसिमल में var Omega = String.fromCharCode(0x3A9)। यह U + FFFF तक काम करता है। इस दृष्टिकोण का उपयोग तब भी किया जा सकता है जब आपके पास एक चर में यूनिकोड संख्या हो।


18
टाइम्स अब बदल गया है, 5 साल बाद, लोग U+FFFFसीमा के बाहर "इमोजी" नामक इन चीजों का उपयोग करते हैं । जावास्क्रिप्ट भी है, तो आप यह कर सकते हैं। var poop = '\u{1F4A9}';
उपयोगकर्ता जो

1
@ यूराटिसिट्नसॉउज़र और वह स्वीकृत उत्तर होना चाहिए!
Marten Koetsier

आप जावास्क्रिप्ट में '0x1F512' वाले एक कोड का उपयोग करके 'ओपन लॉक' वर्ण '\ uD83D \ uDD13' को कैसे सम्मिलित कर सकते हैं? और हमें एक वर्ण सम्मिलित करने के लिए दो कोड की आवश्यकता क्यों है?
तारेकहफ

5
@tarekahf यहां यूनिकोड पर एक संक्षिप्त पाठ है। यूटीएफ -16 ने केवल यूनिकोड बिंदुओं को यू + 0000 से यू + एफएफएफ तक फैलाया। तब यूनिकोड बढ़ता गया और सरोगेट का आविष्कार किया गया ताकि यूटीएफ -16 उन बिंदुओं तक पहुंच सके। लेकिन जावास्क्रिप्ट अभी यह कर सकता है: var lock = '\u{1F512}'और आपको यह मिलता है: that
उपयोगकर्ता जो

4

उत्तर सही है, लेकिन आपको एक चर घोषित करने की आवश्यकता नहीं है। एक स्ट्रिंग में आपका चरित्र हो सकता है:

"This string contains omega, that looks like this: \u03A9"

दुर्भाग्य से अभी भी ASCII में उन कोड्स को UTF-8 को प्रदर्शित करने के लिए आवश्यक है, लेकिन मैं अभी भी प्रतीक्षा कर रहा हूं (बहुत अधिक वर्षों से ...) उस दिन जब UTF-8 ASCII के समान होगा, और ASCII सिर्फ एक स्मरण होगा अतीत।


9
इमोजी टाइप करने के लिए उन कोड को और भी कठिन बनाते हैं! \u{1F641}= =
उपयोगकर्ता जो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.