2011-03-11 8 views
6

के रूप में एन्कोड करता है आज मुझे उस ग्राहक से एक फ़ाइल मिली है जिसे मुझे पढ़ना है, लेकिन इसमें अजीब पात्र हैं। ज्ञात नामों का उपयोग करके, मैं कुछ पात्रों का अर्थ अनुमान लगा सकता हूं।कौन सा कोडपेज 'ç' को '? º' (0x3f 0xba)

उदाहरण के लिए:

Realname | Encoded as | sign | hex 
----------|--------------|-------|------- 
Françios | Fran?ºios | ç  | 3f ba 
André  | Andr??  | é  | 3f 3f 
Hélène | H??l?¿ne  | è  | 3f bf 
etc. 
  • मैं सभी codepages (नेट के लिए जाना जाता है) की कोशिश की है फ़ाइल आयात करते हैं और देखते हैं अगर वे शब्द मुझे पता है को रोकने के लिए। लेकिन कोई कोडपेज मुझे संतुष्टि नहीं देता है।
  • नोटपैड ++ में फ़ाइल खोलना सोचता है कि यह एएनएसआई है, और अवांछित वर्ण भी दिखाता है। (लेकिन इसमें हेक्स-एडिटर प्लगइन है जो उपयोगी है)।
  • अन्य फ़ाइलें (उसी उपयोगकर्ता से & ज़िपफाइल) यूटीएफ -8 में एन्कोड किए गए हैं।

उस व्यक्ति से मुझे फाइलें मिलीं, मैं मदद की उम्मीद नहीं कर सकता। (Google अनुवाद का उपयोग करके) उन्होंने मुझे यह स्पष्ट कर दिया कि उन्हें फाइलें बनाने के लिए बहुत मुश्किल लग रही है, और वह सॉफ्टवेयर का उपयोग कर रहा है (मुझे विश्वास है कि एसएपी) कि मेरे पास पहुंच नहीं है।

क्या कोई अन्य तरीका है जो मुझे फाइलों के एन्कोडिंग को ढूंढ सकता है जो वह मुझे भेजता है?

+0

नोटपैड ++ क्या कहता है फ़ाइल है? नीचे दाएं कोने में देखो। यूनिकोड, एएनएसआई, यूटीएफ -8, और क्या चार सेट? – balexandre

+0

नोटपैड ++ इसकी 'एएनएसआई' सोचता है। लेकिन ansi में 7 एफ से ऊपर वर्ण नहीं हैं (मुझे बताया गया था)। बीए और बीएफ निश्चित रूप से बड़े हैं। – GvS

+1

अच्छा, यह यूटीएफ -8 नहीं है! –

उत्तर

6

मैं, उन परिणाम प्राप्त कर सकते अगर मैं UTF-8 एन्कोडेड पाठ लेने का नाटक यह CP850 है, और फिर Latin-1, Windows-1252, या किसी ऐसे एन्कोडिंग को परिवर्तित। "?" इस तथ्य से आता है कि 0xc3 पर CP850 वर्ण "├" है, जो लैटिन -1 या व्युत्पन्न एन्कोडिंग में मौजूद नहीं है, इसलिए रूपांतरण इसे "?" से बदल देता है।


संपादित करें: मैं एक खोज iconv का उपयोग करने का एक सा व्यापक है, और CP437, CP862, या CP865 CP850 की तुलना में बेहतर मिलान हैं किया था। चूंकि आपने पूछा था, इस समय मैंने उपयोग किया जाने वाला एक-लाइनर था:

for enc in `iconv -l`; do echo -n "$enc: "; echo -n "ç é è" | iconv -s -f $enc -t "LATIN1//TRANSLIT" 2>/dev/null; echo; done 
+0

आपने यह रूपांतरण कैसे किया? एक छोटा सा ऐप लिखा है या कुछ सॉफ्टवेयर का उपयोग कर रहे हैं? – GvS

+0

मैंने एक त्वरित PHP स्क्रिप्ट को एक साथ फेंक दिया जिसने "ç" पर 'mb_convert_encoding' किया था, जिसके परिणामस्वरूप "º" शामिल हो सकता है जब "mb_list_encodings' द्वारा सूचीबद्ध प्रत्येक एन्कोडिंग से यूटीएफ -8 में परिवर्तित किया गया हो। उसने मुझे सीपी 850 की ओर इशारा किया, और फिर मैंने "?" शायद लैटिन -1 या एक अन्य एन्कोडिंग के रूपांतरण से यूनिकोड से अधिक सीमित होगा। हालांकि लैटिन 1 के लिए सीपी 850 एक सही उत्तर नहीं है, यह "é" को "??" के बजाय "?" के रूप में देता है। – Anomie

1

यह यूटीएफ -8 या यूटीएफ -16 होना चाहिए। में वे लगभग सभी नियमित पात्र होते हैं। ऐसा लगता है कि आपके पास एक डीकोड/एन्कोड समस्या है।

नोटपैड ++ यह शायद उलझन में है, क्योंकि आपकी फ़ाइलें बाइट-ऑर्डर-मार्क का उपयोग नहीं करती हैं।

आप अपनी फाइलों को कैसे संसाधित करते हैं?

उन्हें बाइनरी के रूप में पढ़ने की कोशिश करें और फिर स्ट्रिंग प्राप्त करने के लिए अलग-अलग एन्कोडिंग आज़माएं। यदि आप उन्हें बाइनरी के रूप में नहीं पढ़ते हैं, तो एक डिफ़ॉल्ट एन्कोडिंग हो सकती है।

"?" इसके लिए एक संकेत है।

that हो सकता है।

+0

मैंने .NET को ज्ञात प्रत्येक कोडपृष्ठ को आजमाया है। मुझे आश्चर्य है कि क्या कोई और है? – GvS

संबंधित मुद्दे