CSV फ़ाइलें: न टाइप, न एन्कोडिंग, न कोई कमेटी
CSV असल में क्या है, एक ही फ़ाइल दो स्प्रेडशीट में अलग-अलग क्यों खुलती है, और कोटिंग के नियम क्या कहते हैं। अपने ब्राउज़र में CSV कन्वर्ट करें, बिना अपलोड।
एक नज़र में
- प्रकार
- डॉक्यूमेंट
- एक्सटेंशन
- .csv
- MIME टाइप
- text/csv
.csv फ़ाइल एक टेक्स्ट फ़ाइल है। इसमें न हेडर है, न वर्ज़न, न टाइप की जानकारी, न कुछ बाइनरी — इसे Notepad में खोलें और आपको इसका हर बाइट दिखेगा। हर लाइन एक पंक्ति है, और फ़ील्ड को कोई चीज़ अलग करती है। पूरा फ़ॉर्मैट बस इतना ही है, इसीलिए हर प्रोग्राम इसे लिख लेता है और इसीलिए कोई भी दो प्रोग्राम इस पर सहमत नहीं होते कि इसका मतलब क्या है।
और पढ़ें
पच्चीस साल तक इसका कोई स्पेसिफ़िकेशन नहीं था। RFC 4180 2005 में आया और साफ़ तौर पर स्टैंडर्ड नहीं, बल्कि Informational है — यह किसी को बताता नहीं कि क्या करना है, बस यह बयान करता है कि ज़्यादातर इम्प्लीमेंटेशन क्या करते हैं। जो बात यह पक्की करता है वह है कोटिंग: जिस फ़ील्ड में सेपरेटर, कोट या लाइन ब्रेक हो, उसे डबल कोट में लपेटा जाता है, और ऐसे फ़ील्ड के अंदर का कोट दो बार लिखा जाता है। "Widget, large" एक सेल बनेगा या दो, यह इसी नियम से तय होता है, और यही नियम सीधे-सादे पार्सर छोड़ देते हैं।
सेपरेटर हमेशा कॉमा नहीं होता। जिस लोकेल में दशमलव 1,5 की तरह लिखा जाता है, वहाँ चल रही स्प्रेडशीट फ़ील्ड अलग करने के लिए भी कॉमा इस्तेमाल नहीं कर सकती, इसलिए वहाँ Excel सेमीकोलन एक्सपोर्ट करता है — उसी तरह की मशीन पर, उसी मेन्यू से, और ऐसी फ़ाइल बनती है जिसे पड़ोसी देश नहीं खोल पाता। डेटाबेस एक्सपोर्ट अक्सर टैब इस्तेमाल करते हैं। CSV को ठीक से पढ़ने वाला हर टूल पहली कुछ लाइनों से अंदाज़ा लगाता है, और यह साइट भी यही करती है।
एन्कोडिंग बताने की भी कोई जगह नहीं है, और डेटा असल में यहीं खोता है। चीनी नामों वाली CSV, जिसे एक प्रोग्राम ने सेव किया और दूसरे ने खोला, अटपटे निशानों में बदलकर लौटती है, क्योंकि एक ने UTF-8 माना और दूसरे ने सिस्टम कोड पेज। और क्योंकि हर फ़ील्ड बिना टाइप का टेक्स्ट है, स्प्रेडशीट इम्पोर्ट करते समय फिर से अंदाज़ा लगाती है: पार्ट नंबर के शुरुआती शून्य ग़ायब हो जाते हैं, लंबे आइडेंटिफ़ायर साइंटिफ़िक नोटेशन बन जाते हैं, और जो कुछ तारीख़ जैसा दिखता है वह तारीख़ बन जाता है। फ़ाइल ठीक थी; उसे पढ़ने का तरीक़ा ठीक नहीं था।
CSV को दूसरे फ़ॉर्मैट में बदलें
CSV: अक्सर पूछे जाने वाले सवाल
क्या CSV बस एक टेक्स्ट फ़ाइल है?
हाँ, पूरी तरह। न कंटेनर, न कंप्रेशन, न कुछ बाइनरी। कोई भी टेक्स्ट एडिटर इसे खोल लेता है, और जो आपको दिखता है वही इसमें है।
मेरी CSV में सेमीकोलन क्यों हैं?
क्योंकि इसे ऐसे लोकेल में एक्सपोर्ट किया गया जहाँ कॉमा दशमलव का निशान है, इसलिए कॉमा फ़ील्ड अलग करने का काम नहीं कर सकता था। यह फिर भी CSV ही है, और कोई भी ढंग का रीडर सेपरेटर मानकर नहीं चलता, बल्कि पहचानता है।
मेरे शुरुआती शून्य क्यों ग़ायब हो गए?
क्योंकि CSV कोई टाइप सेव नहीं करती और स्प्रेडशीट ने अंदाज़ा लगाया। "007" नंबर जैसा दिखता है, इसलिए वह 7 बन गया। फ़ाइल में कोई ख़राबी नहीं थी — फ़ैसला इम्पोर्ट ने किया। ज़्यादातर स्प्रेडशीट इम्पोर्ट के समय किसी कॉलम को टेक्स्ट पर सेट करने देती हैं, और भरोसेमंद इलाज बस यही है।
मेरा चीनी टेक्स्ट अटपटे निशानों में क्यों बदल गया?
क्योंकि फ़ाइल अपनी एन्कोडिंग के बारे में कुछ नहीं बताती, और उसे खोलने वाले प्रोग्राम ने लिखने वाले प्रोग्राम से अलग अंदाज़ा लगाया। byte-order mark के साथ UTF-8 में सेव करने से Excel इसे सही पढ़ता है, इस क़ीमत पर कि कुछ दूसरे टूल उस मार्कर को फ़ालतू कैरेक्टर के रूप में दिखाते हैं।
क्या मैं यहाँ CSV को PDF में बदल सकता हूँ?
हाँ। इसे कॉमा पर तोड़ने के बजाय CSV के रूप में पार्स किया जाता है, इसलिए कोट वाले फ़ील्ड बचे रहते हैं, और कॉलम अपने कंटेंट के हिसाब से चौड़े होते हैं, हेडर वाली पंक्ति बोल्ड में। आपको जो मिलता है वह पढ़ने और प्रिंट करने के लिए है — PDF में कुछ भी सॉर्ट या जोड़ा नहीं जा सकता।
Excel में बदलने के बारे में क्या?
ज़रूरत नहीं: हर स्प्रेडशीट ऐप्लिकेशन CSV को सीधे खोल लेता है, और पहले कन्वर्ट करने से बस एक और क़दम जुड़ता है जिसमें टाइप का अंदाज़ा लगाया जाता है। यहाँ जो कन्वर्ज़न मौजूद है वह उल्टी दिशा का है — PDF से Excel, जो ऐसे पेज से टेबल दोबारा बनाता है जिसने कभी टेबल दर्ज ही नहीं की।