ANSI प्रारूप क्या है?


जवाबों:


246

ANSI एन्कोडिंग एक सामान्य सामान्य शब्द है जिसका उपयोग किसी सिस्टम पर मानक कोड पेज, आमतौर पर विंडोज के लिए किया जाता है। यह पश्चिमी / अमेरिकी प्रणालियों पर विंडोज -1252 के रूप में अधिक उचित रूप से संदर्भित है । (यह अन्य प्रणालियों पर कुछ अन्य विंडोज कोड पृष्ठों का प्रतिनिधित्व कर सकता है ।) यह अनिवार्य रूप से ASCII वर्ण का एक विस्तार है जिसमें यह शामिल है कि इसमें अतिरिक्त 128 वर्ण कोड के साथ सभी ASCII वर्ण शामिल हैं। यह अंतर इस तथ्य के कारण है कि एएससीआईआई के रूप में "एएनएसआई" एन्कोडिंग 7-बिट के बजाय 8-बिट है (एएससीआईआई आजकल लगभग हमेशा एन्कोड किया गया है क्योंकि एमएसबी सेट 0 के साथ 8-बिट बाइट्स के रूप में )। इस एन्कोडिंग को आमतौर पर ANSI क्यों कहा जाता है, इस स्पष्टीकरण के लिए लेख देखें।

"एएनएसआई" नाम एक मिथ्या नाम है, क्योंकि यह किसी भी वास्तविक एएनएसआई मानक के अनुरूप नहीं है, लेकिन नाम अटक गया है। ANSI, UTF-8 के समान नहीं है।


42
एएनएसआई केवल एक "मामूली" मिथ्या नाम नहीं है, यह पूरी तरह से गलत नाम है। यह नाम स्पष्ट रूप से इसका अर्थ है कि यह जो भी संदर्भित करता है वह एक एएनएसआई मानक है, जो यह नहीं है; यह एक श्वेत-श्याम तथ्य है। उस के साथ कहा, यह इतनी व्यापक रूप से इस्तेमाल किया जाता है कि हम इसके साथ फंस गए हैं।
नैट सीके

1
मैं ANSI को कोड पेज 437 के रूप में जानता हूं, विंडोज कोड पेज 1252 नहीं। वापस जब एएनएसआई ने बुलेटिन बोर्ड सिस्टम के लिए बनाए गए ग्राफिक्स को संदर्भित किया है, तो मैं बहुत अधिक गारंटी दे सकता हूं जो कि मामला है।
लॉर्ड्सकार्लेट

@lordscarlet: ANSI ने उन्हें मानकीकृत नहीं किया है, लेकिन Windows-1252 आपके सुपरसेट के रूप में आपको निकटतम (कम से कम विंडोज पर) मिलता है। संदर्भ के लिए en.wikipedia.org/wiki/ANSI_codepage#ANSI देखें ।
नोल्डोरिन

4
"एएनएसआई" स्पष्ट रूप से किसी भी एएनएसआई मानक का संदर्भ नहीं देता है, हालांकि यह एक बात है कि आप फ़ाइल को सहेजते समय नोटपैड में उदाहरण के लिए "एन्कोडिंग: एएनएसआई" को चुन सकते हैं। और वास्तविक प्रश्न यह है: "इसका क्या मतलब है"? यह उत्तर अब तक का सबसे अच्छा है।
वर्नफ्रीड डॉम्शेइट

1
मेरे मामले में, एएनएसआई का जिक्र था windows-1254
रमज़ान पोलाट

59

तकनीकी रूप से, ANSI US-ASCII के समान होना चाहिए। यह एएनएसआई X3.4 मानक को संदर्भित करता है, जो कि केवल एएनएसआई संगठन के एएससीआईआई के अनुसमर्थित संस्करण है। शीर्ष-बिट-सेट वर्णों का उपयोग ASCII / ANSI में परिभाषित नहीं है क्योंकि यह 7-बिट वर्ण सेट है।

हालाँकि, DOS द्वारा और उसके बाद विंडोज समुदाय के शब्द के दुरुपयोग के वर्षों ने "जो भी मशीन का उपयोग किया जा रहा है उसके सिस्टम कोडपेज" के रूप में इसका व्यावहारिक अर्थ छोड़ दिया है। सिस्टम कोडपेज को कभी-कभी 'mbcs' के रूप में भी जाना जाता है, क्योंकि पूर्वी एशियाई प्रणालियों पर एक बहु-बाइट-प्रति-वर्ण एन्कोडिंग हो सकता है। कुछ कोड पृष्ठ शीर्ष-बिट-स्पष्ट बाइट्स का उपयोग मल्टीबाइट अनुक्रम में बाइट्स के रूप में भी कर सकते हैं, इसलिए यह सादे ASCII के साथ भी सख्त संगत नहीं है ... लेकिन फिर भी, इसे अभी भी "ANSI" कहा जाता है।

यूएस और पश्चिमी यूरोपीय डिफ़ॉल्ट सेटिंग्स पर, "ANSI" विंडोज़ कोड पृष्ठ 1252 पर मैप करता है। यह ISO-8859-1 (हालांकि यह काफी समान है) के समान नहीं है। अन्य मशीनों पर यह कुछ और भी हो सकता है। यह "ANSI" बाहरी एन्कोडिंग पहचानकर्ता के रूप में पूरी तरह से बेकार बनाता है।


32

कड़े शब्दों में, एएनएसआई एन्कोडिंग जैसी कोई चीज नहीं है। बोलचाल की भाषा में शब्द ANSI का उपयोग कई अलग-अलग एन्कोडिंग के लिए किया जाता है:

  1. आईएसओ 8859-1
  2. विंडोज CP1252
  3. एक विंडोज मशीन पर मौजूदा प्रणाली एन्कोडिंग (Win32 एपीआई शब्दावली में)।

यह गलत है। विंडोज कोडपेज 1252 आईएसओ 8859-1 के आधार पर बनाया गया था, लेकिन पूरी तरह से बराबर नहीं है। ANSI शब्द ISO 8859-x मानक के संदर्भ में है।
पैट्रिक

17

एक बार माइक्रोसॉफ्ट ने, बाकी सभी की तरह, 7-बिट कैरेक्टर सेट का इस्तेमाल किया, और जब उन्होंने इसे अनुकूल किया, तब उन्होंने खुद का आविष्कार किया, हालांकि उन्होंने ASCII को एक कोर सबसेट के रूप में रखा। तब उन्हें एहसास हुआ कि दुनिया 8-बिट एन्कोडिंग में चली गई थी और आईएसओ-8859 परिवार जैसे अंतरराष्ट्रीय मानक थे। उन दिनों में, यदि आप एक अंतर्राष्ट्रीय मानक पकड़ना चाहते थे और आप अमेरिका में रहते थे, तो आपने इसे अमेरिकी राष्ट्रीय मानक संस्थान, एएनएसआई से खरीदा था, जिन्होंने अपने स्वयं के ब्रांडिंग और संख्याओं के साथ अंतर्राष्ट्रीय मानकों को पुनः प्रकाशित किया (ऐसा इसलिए है क्योंकि अमेरिकी सरकार चाहती है अमेरिकी मानकों के अनुरूप, अंतर्राष्ट्रीय मानक नहीं)। इसलिए Microsoft की ISO-8859 की प्रति ने कवर पर "ANSI" कहा। और क्योंकि Microsoft उन दिनों मानकों के बहुत अभ्यस्त नहीं थे, इसलिए उन्होंने ' टी का एहसास है कि एएनएसआई ने बहुत सारे अन्य मानकों को भी प्रकाशित किया। इसलिए उन्होंने ISO-8859 परिवार में मानकों का उल्लेख किया (और उनके द्वारा आविष्कार किए गए वेरिएंट, क्योंकि वे उन दिनों में मानकों को वास्तव में समझ नहीं पाए थे), "ANSI" नाम से, और यह Microsoft में अपना रास्ता खोज लिया। उपयोगकर्ता प्रलेखन और इसलिए उपयोगकर्ता समुदाय में। यह लगभग 30 साल पहले था, लेकिन आप अभी भी कभी-कभी नाम सुनते हैं।


मानक उद्योग के सामान थे इसलिए प्रोग्रामर मानकों के लिए नए थे क्योंकि यह एक नया उद्योग था?
कॉफडेवलपर्स

1
यह Microsoft द्वारा स्थापित किए जाने के समय तक एक नया उद्योग नहीं था।
माइकल काय

Microsoft सामान्य रूप से अंतर-व्यवहार के लिए एक समस्याग्रस्त और विवादास्पद रवैया रखता है। जब उन्होंने 1990 के दशक के उत्तरार्ध में सीधे तौर पर उन्हें अलग करने के बजाय मानकों को "गले लगाने और विस्तारित करने" का फैसला किया, तो यह एक उल्लेखनीय बदलाव था, हालांकि अभी भी उचित अंतर के लिए एक जिम्मेदार दृष्टिकोण नहीं है। (आप तर्क दे सकते हैं कि प्रगति असंभव है यदि आप केवल मौजूदा मानकों का पालन करते हैं, लेकिन यह स्पष्ट रूप से प्राथमिक कारण नहीं है कि वे इसे इस तरह से करते हैं।)
ट्रिपल

14

ASCII सिर्फ 128 प्रतीकों के साथ 7 बिट कोड पेज को परिभाषित करता है। एएनएसआई इसका विस्तार 8 बिट तक करता है और प्रतीकों के 128 से 255 के लिए कई अलग-अलग कोड पृष्ठ हैं।

नामकरण ANSI सही नहीं है क्योंकि यह वास्तव में ISO / IEC 8859 मानदंड है जो इस कोड पृष्ठों को परिभाषित करता है। आईएसओ / आईईसी 8859 देखेंसंदर्भ के लिए । 16 कोड पृष्ठ ISO / IEC 8859-1 से ISO / IEC 8859-16 हैं।

Windows-1252 फिर से ISO / IEC 8859-1 पर आधारित है, जिसमें मुख्य रूप से 128 में 159 की सीमा में C1 नियंत्रण की सीमा में कुछ संशोधन किए गए हैं। विकिपीडिया बताता है कि Windows-1252 को एक दूसरे के साथ ISO-8859-1 भी कहा जाता है। आईएसओ और 8859 के बीच हाइफ़न। (अविश्वसनीय? कौन ऐसा कुछ करता है?!?)


5

मूल रूप से "एएनएसआई" विंडोज पर विरासत कोडपेज को संदर्भित करता है। इस विषय पर रेमंड चेन का एक लेख भी देखें :

इसका स्रोत इस तथ्य से आता है कि विंडोज कोड पृष्ठ 1252 मूल रूप से एक एएनएसआई ड्राफ्ट पर आधारित था, जो आईएसओ मानक 8859-1 बन गया।

पहले 127 अक्षर अधिकांश कोड पृष्ठों में ASCII के समान हैं, हालांकि ऊपरी वर्ण भिन्न होते हैं।

हालांकि, एएनएसआई करता नहीं स्वचालित रूप से CP1252 या लैटिन 1 मतलब है।

सभी भ्रम के बावजूद आपको आजकल ऐसे मुद्दों से बचना चाहिए और यूनिकोड का उपयोग करना चाहिए।


4

यदि आपका पीसी "पश्चिमी" पीसी नहीं है और आपको पता नहीं है कि कौन सा कोड पृष्ठ उपयोग किया जाता है, तो आप इस पृष्ठ पर नज़र डाल सकते हैं: राष्ट्रीय भाषा समर्थन (एनएलएस) एपीआई संदर्भ

[माइक्रोसॉफ्ट ने इस संदर्भ को हटा दिया, इसे वेब-आर्काइव नेशनल लैंग्वेज सपोर्ट (एनएलएस) एपीआई संदर्भ के रूप में लें

या आप अपनी रजिस्ट्री को क्वेरी कर सकते हैं:

C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    ACP    REG_SZ    1252

End of search: 1 match(es) found.

C:\>

2

एकल-बाइट वर्णों का उपयोग करते समय, ASCII प्रारूप पहले 127 वर्णों को परिभाषित करता है। 128-255 से विस्तारित वर्णों को अन्य भाषाओं के लिए सीमित समर्थन की अनुमति देने के लिए विभिन्न एएनएसआई कोड पृष्ठों द्वारा परिभाषित किया गया है। ANSI एन्कोडेड स्ट्रिंग की समझ बनाने के लिए, आपको यह जानना होगा कि यह किस कोड पेज का उपयोग करता है।


1

मुझे याद है कि जब "ANSI" टेक्स्ट ने ANSI.SYS ड्राइवर के माध्यम से DOS में प्रयोग किए जाने वाले छद्म VT-100 से बचने वाले कोड को स्ट्रीमिंग टेक्स्ट के प्रवाह को बदलने के लिए भेजा .... शायद आप जो नहीं देख रहे हैं लेकिन अगर यह http देखें : //en.wikipedia.org/wiki/ANSI_escape_code


-4

ANSI (उर्फ विंडोज -1252 / WinLatin1) लैटिन वर्णमाला का एक चरित्र एन्कोडिंग है, जो आईएसओ-8859-1 के समान है । आप विकिपीडिया पर इसका जायजा लेना चाहते हैं ।


6
यह सभी के लिए CP1252 नहीं है; यह क्षेत्र पर बहुत निर्भर करता है।
जोए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.