2010-02-14 7 views
5

मेरे पास एक फ़ाइल है जो एएनएसआई एन्कोडेड है। हालांकि यह इसके अंदर अरबी अक्षरों को दिखाता है। इस पाठ फ़ाइल को कुछ प्रोग्राम द्वारा उत्पन्न किया गया था (मुझे कोई जानकारी नहीं है) लेकिन ऐसा लगता है कि अरबी अक्षरों को प्रकट करने के लिए कुछ प्रकार का आंतरिक एन्कोडिंग (यदि मैं कह सकता हूं और यदि यह संभव है) है।टेक्स्ट फ़ाइल कैसे बनाएं एक से अधिक एन्कोडिंग है?

क्या ऐसी कोई बात है? यदि नहीं, तो एएनएसआई फ़ाइल अरबी अक्षरों को कैसे दिखा सकती है?

* यदि संभव हो तो जावा कोड


संस्करण में समझाने 01

जब मैंने इसे नोटपैड में खोलने ++ यह पता चलता है कि पेज एन्कोडिंग एएनएसआई है।

http://www.4shared.com/file/221862075/e8705951/text-Windows.html


संस्करण 02

आप में से कम से फ़ाइल की जाँच कर सकते हैं:: इस फोटो की जांच करें

http://www.4shared.com/file/221853641/3fa1af8c/data.html

+1

क्या आपके पास लिनक्स तक पहुंच है? यदि हां, तो 'file' कमांड क्या कहता है? –

+0

नहीं, मेरे पास लिनक्स तक पहुंच नहीं है ... यदि आप हालांकि करते हैं और मदद करना चाहते हैं, तो कृपया मेरी फ़ाइल को संस्करण 02 में दिए गए लिंक से डाउनलोड करें और मुझे बताएं कि आपको क्या मिलता है। आपके सहयोग की सराहना। –

+1

@ जोओओ 'फाइल' इस फाइल पर बीएस पैदा करता है। :-( –

उत्तर

3

मैंने फ़ायरफ़ॉक्स और ओपेरा दोनों में फ़ाइल खोलने का प्रयास किया। मुझे अरबी विंडोज-1256 में चरित्र एन्कोडिंग को दोनों ब्राउज़र में सही तरीके से प्रदर्शित करने के लिए सेट करना पड़ा, इसलिए फ़ाइल की एन्कोडिंग सबसे अधिक होने की संभावना है।

नोट: मैंने मूल रूप से इसे एक टिप्पणी के रूप में पोस्ट किया, लेकिन इसे उत्तर देने के लिए कहा गया था।

+0

फिर से धन्यवाद ... आपका सरल परीक्षण (जिसे मैंने कभी नहीं सोचा था) को मेरी समस्या का समाधान मिला जो मेरे समय के 8 घंटे बर्बाद हो गया। धन्यवाद 100000000 बार :) –

+1

+1: ब्राउज़र का उपयोग करने के लिए :) (और सही होने के नाते) –

4

आपको कैसे पता चला है कि यह एएनएसआई इनकोडिंग है? यदि यह यूटीएफ -8 जैसे बहु-बाइट एन्कोडिंग नहीं है, तो मेरा अनुमान होगा कि यह एक अरबी कोड पेज का उपयोग करके एन्कोड किया जाएगा: Windows-1256

आप हेक्स संपादक में फ़ाइल को देख सकते हैं और पता लगा सकते हैं कि अरबी वर्णों की संख्या कितनी है और इस तरह से यह पता लगाने का प्रयास करें कि यह किस एन्कोडिंग/कोड पेज के साथ बनाया गया था।

+1

यूप, यह वही है। –

4

संक्षिप्त उत्तर: संभावना है कि आपकी टेक्स्ट फ़ाइल "एएनएसआई" -कोडेड नहीं है, लेकिन utf-8 है।

लांग जवाब:

पहले, शब्द "एएनएसआई" (Windows पर) एक निश्चित एन्कोडिंग मतलब यह नहीं है; इसका मतलब आपकी भाषा सेटिंग्स पर निर्भर करता है। उदाहरण के लिए, पश्चिमी यूरोप और यूएसए में, यह आमतौर पर Windows-1252 (ISO/IEC 8859-1, also known as latin-1 का एक संस्करण), जापान में, यह SHift JIS है, और अरबी देशों में, यह ISO/IEC_8859-6 है।

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

ध्यान दें कि मेरा मतलब "यूनिकोड" नहीं है, जो विंडोज़ पर आमतौर पर UTF-16LE का मतलब है। यह UTF-8 भी हो सकता है। दोनों एन्कोडिंग हैं जो वर्तमान में यूनिकोड में परिभाषित सभी 100,000+ अक्षरों को एन्कोड कर सकते हैं, लेकिन वे इसे विभिन्न तरीकों से करते हैं। दोनों variable length encodings हैं, जिसका अर्थ है कि सभी वर्ण बिट्स की संख्या का उपयोग करके एन्कोड नहीं किए गए हैं।

यूटीएफ -8 में, प्रत्येक चरित्र को एक से चार बाइट्स के रूप में एन्कोड किया जाता है। एन्कोडिंग को चुना गया है कि ASCII वर्ण एक बाइट में एन्कोड किए गए हैं।

यूटीएफ -16 में, प्रत्येक चरित्र को दो चार बाइट के रूप में एन्कोड किया जाता है। इस एन्कोडिंग का मूल रूप से आविष्कार किया गया है जब यूनिकोड में 64K से कम वर्ण थे, और इसलिए एक प्रत्येक 16-बिट शब्द में प्रत्येक चरित्र को एन्कोड कर सकता था।बाद में, जब यह स्पष्ट हो गया कि यूनिकोड को 64 के सीमा से आगे बढ़ना होगा, तो एक योजना का आविष्कार किया गया था जहां 0xD800-0xDFFF श्रेणी में शब्दों के जोड़े का उपयोग पहले 64K (शून्य 0x800) वर्णों के बाहर वर्णों का प्रतिनिधित्व करने के लिए किया जाता है।

क्या फाइल में वास्तव में देखने के लिए, एक हेक्स संपादक में खोलें:

  • पहले दो बाइट्स एफएफ एफई रखते हैं, तो यह संभावना UTF-16LE (थोड़ा endian)
  • तो है पहले दो बाइट्स एफई एफएफ कर रहे हैं, तो यह संभावना UTF-16BE (बड़ा endian, विंडोज पर संभावना नहीं)
  • है पहले तीन बाइट्स एफई बी बी बीएफ रखते हैं, तो यह संभावना UTF-8
  • है आप एक बहुत देखते हैं, तो 00 बाइट्स की संभावना है, यह संभवतः यूटीएफ -16 (या यूटीएफ -32, यदि आप 00 बाइट्स के जोड़े देखते हैं)
  • यदि अरबी वर्ण एक बाइट पर कब्जा करते हैं, तो यह संभवतः आईएसओ -885 9-6 (उदा। शा डी 5 होगा)।
  • यदि अरबी वर्ण एकाधिक बाइट्स पर कब्जा करते हैं, तो यह संभवतः यूटीएफ -8 (उदाहरण के लिए डी 8 बी 4 होगा)।
+0

दिलचस्प जानकारी! धन्यवाद :) –

4

क्या ऐसी कोई बात है?

सं

यदि नहीं, तो कैसे एएनएसआई फ़ाइल अरबी पत्र दिखा सकते हैं?

यह विंडोज-एएनएसआई एन्कोडेड फ़ाइल नहीं है। अधिक संभावना है, यह variable-width encoding का उपयोग करता है, सबसे अधिक संभावना यूटीएफ -8: यूटीएफ -8 में कई सामान्य चरित्र पद यूएस-एएससीआईआई (वास्तव में, इसे इस तरह से डिजाइन किया गया था) में उनके पदों के बराबर हैं, और अनुमान के अनुसार विंडोज- एएनएसआई।

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

हालांकि, अन्य देशों में डिफ़ॉल्ट Windows द्वारा प्रयुक्त एन्कोडिंग है नहीं विंडोज़ -1252 बल्कि एक अलग एन्कोडिंग है, जो तब भी एएनएसआई कहा जाता है "(पुराने विंडोज संस्करणों ... आज में, डिफ़ॉल्ट UTF-8 है) "। इस मामले में, कोडपृष्ठ 1256.

+0

कृपया इस फोटो को जांचें: http://www.4shared.com/file/221862075/e8705951/text-Windows.html –

+1

@MAK: हेक्स संपादक के साथ इसे जांचें। किसी भी मामले में, नोटपैड ++ आपको झूठ बोलना चाहिए। –

+0

हेक्स संपादक के लिए कोई सिफारिश? मैक समर्थन पसंद किया जाता है। –

1

एएनएसआई चरित्र एन्कोडिंग 217 वर्णों के लिए अनुमति देता है और इसमें अरबी अक्षरों नहीं हैं। मुझे लगता है कि शायद फ़ाइल एक वैकल्पिक एन्कोडिंग का उपयोग करता है।

आपके संपादन को परेशान करते हुए, ऐसा लगता है कि समस्या नोटपैड ++ के साथ है, क्योंकि जो प्रदर्शित किया जा रहा है वह एएनएसआई वर्णसेट की क्षमताओं से परे स्पष्ट रूप से है।

+1

आप 217 वर्ण कैसे प्राप्त करते हैं? क्या ये प्रिंट करने योग्य पात्र हैं? –

+1

हां, वे प्रिंट करने योग्य हैं। मुझे लगता है कि अधिक गैर प्रिंट करने योग्य हैं। – spender

+1

यह संभव है कि फ़ाइल यूटीएफ -8 है लेकिन कोड पृष्ठों की संभावना के बारे में क्या है? वहां * यूटीएफ -8 से पहले कंप्यूटर पर गैर-अंग्रेजी वर्ण थे। –

1

पहले मैंने अपनी फ़ाइल डाउनलोड की और इसके एन्कोडिंग की जांच करने के लिए विम का उपयोग करने की कोशिश की और यह दूसरी मशीन पर नहीं पता था और दूसरी मशीन पर यह latin1 कहा गया था जो नोटपैड ++ (सामान्य जवाब दिया गया) में जो हुआ उससे समान हो सकता है।
तो मैं file data.txt किया था और उत्पादन इस था:

data.txt: ISO-8859 text, with CRLF line terminators 

आशा है कि यह मदद करता है।

EDIT:
ब्राउज़र चीज़ का उपयोग करके पता चला कि यह उत्तर गलत है।

आईएसओ -885 9-4 और आईएसओ -885 9 -13 त्रुटियों के बिना पाठ प्रदर्शित कर सकते हैं, लेकिन पात्रों जहां अरबी में नहीं है।