2011-08-09 13 views
23

एक ग्राहक मुझे एक .csv फ़ाइल भेज रहा है जहां लाइन ब्रेक अनुक्रम 0xD 0xD 0xA अनुक्रम से बना है। जहां तक ​​मुझे पता है कि लाइन ब्रेक या तो मैक या यूनिक्स से 0xA या विंडोज से 0xD 0xA हैं।0 डी 0 डी 0 ए लाइन ब्रेक के साथ टेक्स्ट फ़ाइल

0xD 0xD 0xA कोई ज्ञात एन्कोडिंग है? क्या बचत का कोई ज्ञात अनुक्रम है जो फ़ाइल के लाइन एंडिंग को दूषित करता है जो इसका कारण बनता है (मुझे लगता है कि ग्राहक मैक का उपयोग करता है)?

फ़ाइल किसी भी एन्कोडिंग मार्कर से शुरू नहीं होती है, यह सीधे टेक्स्ट सामग्री से शुरू होती है। कोड पृष्ठ 1252 के साथ खोले जाने पर टेक्स्ट सही तरीके से प्रदर्शित होता है।

उत्तर

24

सीआरसीआरएलएफ Windows XP notepad word wrap bug के परिणामस्वरूप जाना जाता है।

जब आप Windows कंप्यूटर पर Enter कुंजी दबाएं, दो अक्षर वास्तव में जमा हो जाती है: एक गाड़ी वापसी (सीआर) और एक लाइन फ़ीड

भविष्य में संदर्भ के लिए, यहाँ जुड़े हुए ब्लॉग से प्रासंगिकता के एक उद्धरण है (वामो)। ऑपरेटिंग सिस्टम हमेशा चरित्र अनुक्रम सीआर एलएफ को एंटर कुंजी के समान ही व्याख्या करता है: यह अगली पंक्ति में जाता है। हालांकि जब अतिरिक्त सीआर या एलएफ पात्र होते हैं, तो कभी-कभी समस्याएं पैदा हो सकती हैं।

नोटपैड के विंडोज एक्सपी संस्करण में एक बग है जो अतिरिक्त सीआर अक्षरों को डिस्प्ले विंडो में संग्रहीत कर सकता है। बग निम्न स्थिति में होता है:

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

सीआर सीआर एलएफ पात्र आपत्तियों का कारण बन सकते हैं यदि आप उन्हें अन्य प्रोग्रामों में कॉपी और पेस्ट करते हैं। यदि आप नोटपैड विंडो का आकार बदलते हैं तो वे नोटपैड को लाइनों को ठीक से फिर से लपेटने से रोकते हैं।

आप शब्द रैप सुविधा को बंद करके सीआर सीआर एलएफ पात्रों को हटा सकते हैं, फिर वांछित होने पर इसे वापस चालू कर सकते हैं। हालांकि, जब आप ऐसा करते हैं तो डिस्प्ले विंडो की शुरुआत में कर्सर को दोबारा स्थानांतरित किया जाता है।

1

यह आमतौर पर संशोधन नियंत्रण प्रणाली, या इसी तरह की एक बग से उत्पन्न होता है। यह, सीवीएस से एक उत्पाद था, तो एक फ़ाइल यूनिक्स सर्वर के लिए Windows से में जांच की गई, और उसके बाद फिर से जाँच की ...

दूसरे शब्दों में, यह सिर्फ टूट गया है ...

+0

मुझे पता चला कि जब मैं विंडोज सिस्टम पर TortoiseCVS में बाहर की जाँच, डिफ़ॉल्ट उपयोग करने के लिए है विंडोज लाइन एंडिंग्स। इसने '0 डी 0 ए' को '0 डी 0 डी 0 ए' में अनुवाद करने का कारण बताया ('0 ए' से' 0 डी 0 ए' तक विस्तार करते समय टीसीवीएस मौजूदा '0 डी 0 ए' का सम्मान क्यों नहीं करता है?) और मैं एक्लिप्स में डबल लाइन स्पेसिंग के साथ समाप्त हुआ मैं सफाई करने के थक गया। चेक आउट करते समय "यूनिक्स लाइन एंडिंग का उपयोग करें" विकल्प चुनकर समस्या को ठीक करें। – ADTC

3

नेटस्केप एएनएसआई इनकोडिंग फ़ाइलें अपने लाइन ब्रेक के लिए 0 डी 0 डी 0 ए का उपयोग करें।

0

ऐप्पल मेल टेक्स्ट और सीएसवी संलग्नक पर एक एन्कोडिंग त्रुटि बनाने के लिए भी जाना जाता है। संक्षेप में यह प्रत्येक लाइन पर मुलायम रेखा ब्रेक के साथ लाइन टर्मिनेटर को प्रतिस्थापित करता है, जो एन्कोडिंग में = 0 डी जैसा दिखता है। यदि अटैचमेंट को Outlook पर ईमेल किया गया है, तो Outlook सॉफ्ट लाइन ब्रेक को देखता है, फिर = को रीयल लाइन ब्रेक यानी 0 डी 0 ए जोड़ता है ताकि आपको प्रत्येक पंक्ति के अंत में 0D0D0A (cr cr lf) मिल सके। एन्कोडिंग = 0 डी = होना चाहिए यदि यह एक मैक प्रारूप फ़ाइल (या यूनिक्स का कोई अन्य स्वाद) या = 0 डी 0 ए = यदि यह एक विंडोज प्रारूप फ़ाइल है।

यदि आप सेब मेल (कम से कम मैवरिक्स या योसेमेट में) से ईमेल कर रहे हैं, तो अनुलग्नक को कोई टेक्स्ट या सीएसवी फ़ाइल स्वीकार्य कामकाज नहीं है। इसे संपीड़ित करें।

बग भी मौजूद है यदि आप समानांतर के तहत एक विंडोज़ वीएम चला रहे हैं और सेब मेल का उपयोग कर वहां से एक txt फ़ाइल ईमेल करें। यह ईमेल एन्कोडिंग है। यहां पिछली टिप्पणियां बनाएं, ऐसा लगता है जैसे नेटस्केप का एक ही मुद्दा था।

0

बस कह (... एक तरह से) यह भी मान है, कि पर php से दिया जाता है:

<?php var_dump(urlencode(PHP_EOL)); ?> 
    // Prints: string '%0D%0A' (length=6)-- used in 5.4.24 at least 
संबंधित मुद्दे