ANSI फ़ाइल लैटिन वर्ण के साथ चारसेट के साथ


1

मैं एन्कोडिंग / चारसेट के बारे में संदेह के साथ हूं।

मैं एक परीक्षण करता हूं। एएनएसआई में एनकोड के साथ नोटपैड ++ में उद्धरण के बिना स्ट्रिंग "टेस्ट Á" टाइप करना।

"ANSI वर्ण सभी ASCII वर्णों जैसे कि अंक 0-9 और अंग्रेजी अक्षर az और AZ के लिए समान हैं," ( http://www.firstobject.com/convert-ansi-file-to-unicode.htm )

मेरे आश्चर्य के लिए, नोटपैड ++ ने फ़ाइल को सामान्य रूप से सहेजा है, मैं इसे एनएपीएड ++ पर सामान्य रूप से एनकोडिंग पर एकेंटेशन के साथ पढ़ सकता हूं।

अन्य परीक्षण, मैंने उसी फ़ाइल को HxD ( http://mh-nexus.de/en/hxd/ ) के साथ खोला , और मेरी फ़ाइल सही है, फ़ाइल के अंत में लैटिन वर्ण "Á" के साथ। नीचे हेक्सा देखें:

54 45 53 54 20 C1 -> परीक्षण C

मैंने सोचा कि इसे काम करने के लिए UTF-8 एन्कोडिंग का उपयोग करना चाहिए, लेकिन यह आवश्यक नहीं है।

क्या कोई मुझे समझा सकता है कि यह कैसे संभव है?

जवाबों:


1

फ़ाइल बनाने और इसे देखने के लिए आप किसी भी वर्ण-सेट और किसी भी एन्कोडिंग का उपयोग कर सकते हैं।

आपको बस सुनिश्चित करना है, जब देखने के लिए, उसी सेट और एन्कोडिंग का उपयोग करना है जैसा कि फ़ाइल लिखने के लिए उपयोग किया गया था।

अधिकांश चरित्र सेटों में वास्तव में एक बड़ा ओवरलैप होता है। उदाहरण के लिए, अधिकांश कैरेक्टर सेट (EBCDIC और अन्य को छोड़कर) में ASCII वर्ण समान पदों (यानी समान कोड-पॉइंट्स) पर ASCII के रूप में सेट होते हैं। इसलिए आप UTF-8 एन्कोडिंग के साथ यूनिकोड वर्ण सेट में एक फ़ाइल लिख सकते हैं और, जब तक कि फ़ाइल में केवल वे अक्षर होते हैं जो ASCII में होते हैं, आप उस फ़ाइल को Windows लैटिन -1 एन्कोडिंग का उपयोग करके देख सकते हैं।

नोट: Microsoft "ANSI" और "यूनिकोड" जैसे शब्दों के साथ बहुत मैला है।


अपडेट करें:

सबसे पहले, आपको जुक्का के उत्तर पर ध्यान देना चाहिए क्योंकि जुक्का इस विषय का विशेषज्ञ है ।

अपने Á के रूप में, इस अर्क को यहां से देखें

Dec Hex ASC PC  437 850 Win Lat1    Uni
192 00C0        └   └   └   À   À   À
193 00C1        ┴   ┴   ┴   Á   Á   Á
194 00C2        ┬   ┬   ┬   Â   Â   Â
195 00C3        ├   ├   ├   Ã   Ã   Ã
196 00C4        ─   ─   ─   Ä   Ä   Ä
197 00C5        ┼   ┼   ┼   Å   Å   Å

ध्यान दें कि point विंडोज 8 में कोड बिंदु 194 (0xC1) पर है, आईएसओ 8859-1 लैटिन 1 में और यूनिकोड / आईएसओ 10646 में। यदि आपने विंडोज लैटिन -1 में लिखा है तो आप इसे आईएसओ 8859-1 पर देख सकते हैं।

यदि आप इसे यूनिकोड के रूप में पढ़ने की कोशिश करते हैं तो आपको समस्या होगी क्योंकि यूनिकोड एनकोडिंग उस चरित्र का प्रतिनिधित्व करने के लिए कई बाइट्स का उपयोग करते हैं,


# echo $LANG
en_US.UTF-8

# cat t
TEST Á

# hexdump -C t
00000000  54 45 53 54 20 c3 81 0a                           |TEST ...|
00000008

ध्यान दें कि 81 (यूनिकोड कोड बिंदु 00C1) UT3-8 में c3 81 के रूप में एन्कोडेड है


1

नोटपैड ++ में डिफ़ॉल्ट एन्कोडिंग को बिना स्पष्टीकरण के "एएनएसआई" कहा जाता है; इसका मतलब विंडोज़ -1252 हो सकता है या इसका मतलब यह हो सकता है कि जो भी 8-बिट एन्कोडिंग है वह सिस्टम का देशी 8-बिट एन्कोडिंग है (आपके मामले में, यह शायद विंडोज़ -1252 वैसे भी है)। "एएनएसआई" अपने 8-बिट एन्कोडिंग के लिए एक Microsoft मिथ्या नाम है, जिसमें से एक (जिसे अब विंडोज़ -1252 के रूप में जाना जाता है) बहुत पहले अमेरिकी राष्ट्रीय मानक संस्थान को अनुमोदन के लिए प्रस्तुत किया गया था - और खारिज कर दिया गया।

विंडोज़ -1252 एन्कोडिंग में "Á" दर्ज करने में कोई समस्या नहीं है। स्वाभाविक रूप से, नोटपैड ++ भी इसे ठीक दिखाता है। तो कई, कई अन्य कार्यक्रम करते हैं।

यदि आप उदाहरण के लिए "for" दर्ज करना चाहते हैं तो आपको UTF-8 की आवश्यकता होगी। बहुत से लोग UTF-8 का उपयोग करते हैं, भले ही उन्हें विंडोज़ -1252 के बाहर के पात्रों की आवश्यकता न हो, ताकि बाद में एन्कोडिंग को बदलने की कोई आवश्यकता न हो, यदि नए वर्ण जोड़े जाते हैं।

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