गाइड

CSV फ़ाइल में अजीब अक्षर क्यों दिखते हैं (और इसे कैसे ठीक करें)

Opener टीम6 मिनट में पढ़ें

“é” या “Сума” जैसे अजीब अक्षरों का मतलब है कि CSV एक टेक्स्ट एन्कोडिंग में सेव हुई थी और ऐसे खोली गई जैसे किसी दूसरी एन्कोडिंग में हो — अक्षर फ़ाइल में मौजूद हैं, बस उन्हें गलत तरीके से पढ़ा जा रहा है। फ़ाइल को सही एन्कोडिंग के साथ खोलें (CSV व्यूअर इसे अपने-आप पहचानता है) और UTF-8 कॉपी सेव कर लें। सवालिया निशान (“????”) अलग मामला है: आम तौर पर इसका मतलब है कि फ़ाइल लिखते समय ही अक्षर खो गए थे।

एन्कोडिंग क्या है, एक मिनट में

CSV फ़ाइल प्लेन टेक्स्ट है, और डिस्क पर टेक्स्ट बस नंबरों (बाइट) की एक लिस्ट होता है। एन्कोडिंग वह टेबल है जो बताती है कि कौन-सा नंबर किस अक्षर का है। साधारण अंग्रेज़ी अक्षरों और अंकों पर लगभग हर एन्कोडिंग सहमत होती है, इसीलिए आपके बैंक एक्सपोर्ट में नंबर तो ठीक दिखते हैं, जबकि नाम और विवरण कचरे में बदल जाते हैं।

अकाउंटिंग सॉफ़्टवेयर और बैंकों के एक्सपोर्ट में आपको ये तीन एन्कोडिंग मिलेंगी:

फ़ाइल ख़ुद आम तौर पर नहीं बताती कि वह कौन-सी एन्कोडिंग इस्तेमाल करती है। उसे खोलने वाले प्रोग्राम को अंदाज़ा लगाना पड़ता है, और अंदाज़ा गलत हो तो आपको mojibake मिलता है — इस बिगड़े टेक्स्ट का तकनीकी नाम।

कचरे को पढ़ें: हर पैटर्न क्या बताता है

कचरा किस तरह का है, यही सुराग है कि गड़बड़ी कहाँ हुई।

आपको दिखता है उम्मीद थी क्या हुआ
é, ü, € é, ü, € UTF-8 फ़ाइल Windows-1252 की तरह खोली गई
Сума (बहुत सारे Ð और Ñ) Сума UTF-8 सिरिलिक Windows-1252 की तरह खोला गया
Ñóìà (एक्सेंट वाले लैटिन अक्षर) Сума Windows-1251 फ़ाइल Windows-1252 की तरह खोली गई
Cafй Café Windows-1252 फ़ाइल Windows-1251 की तरह खोली गई
� (काले डायमंड में ?) कोई भी अक्षर पुरानी एन्कोडिंग वाली फ़ाइल UTF-8 की तरह खोली गई
???? कोई भी अक्षर फ़ाइल सेव करते समय अक्षर खो गए

“Ô + कुछ या “Д/“Ñ” + कुछ जैसे जोड़े इस बात की पहचान हैं कि UTF-8 को किसी पुरानी एन्कोडिंग की तरह पढ़ा जा रहा है: UTF-8 में हर ग़ैर-अंग्रेज़ी अक्षर दो बाइट का होता है, और पुरानी टेबल हर बाइट को अलग चिह्न की तरह दिखाती है। यह अच्छी ख़बर है — कुछ भी नहीं खोया, और फ़ाइल को UTF-8 के रूप में खोलने से सब ठीक हो जाता है।

सादे सवालिया निशान बुरी ख़बर हैं। ये आम तौर पर तब आते हैं जब किसी प्रोग्राम ने टेक्स्ट को ऐसी एन्कोडिंग में सेव करने की कोशिश की जिसमें उन अक्षरों के लिए जगह ही नहीं थी (जैसे सिरिलिक को Windows-1252 में) और हर ऐसे अक्षर को ? से बदल दिया। मूल अक्षर अब फ़ाइल में हैं ही नहीं, और कोई भी व्यूअर उन्हें वापस नहीं ला सकता। इसका इलाज है सोर्स सिस्टम से दोबारा एक्सपोर्ट करना — अगर एक्सपोर्ट डायलॉग में विकल्प हो, तो UTF-8 या सही रीजनल एन्कोडिंग चुनें।

BOM: Excel UTF-8 को गलत क्यों पढ़ता है

UTF-8 फ़ाइल की शुरुआत में तीन अदृश्य बाइट हो सकती हैं जिन्हें byte order mark (BOM) कहते हैं। यह एक संकेत है जो बताता है “यह फ़ाइल UTF-8 है”।

CSV पर डबल-क्लिक करने पर Excel इसी संकेत पर काफ़ी निर्भर रहता है। BOM हो तो वह आम तौर पर UTF-8 सही पढ़ता है; न हो तो अक्सर आपके कंप्यूटर की पुरानी एन्कोडिंग मान लेता है — और ठीक इसी तरह बैंक का बिल्कुल सही UTF-8 एक्सपोर्ट “Сума” में बदल जाता है। दूसरे प्रोग्राम उल्टा करते हैं और BOM को पहले कॉलम हेडर की शुरुआत में  जैसे कचरे की तरह दिखाते हैं। अगर आपको यह दिखे, तो फ़ाइल UTF-8 है और BOM टेक्स्ट की तरह दिख रहा है।

समाधान 1: अपने-आप पहचानने वाले टूल में खोलें

सबसे तेज़ तरीका है कि एन्कोडिंग किसी और को पहचानने दें। Opener का CSV व्यूअर पहले UTF-8 आज़माता है और टेक्स्ट के हिसाब से Windows-1251 या Windows-1252 पर चला जाता है, इसलिए नाम और विवरण बिना किसी इम्पोर्ट विज़ार्ड के सही दिखते हैं। वह सेपरेटर भी पहचानता है — कॉमा, सेमीकोलन, टैब या पाइप।

फ़ाइल आपके ब्राउज़र में पढ़ी जाती है और कहीं अपलोड नहीं होती, जो सैलरी शीट, इनवॉइस और बैंक स्टेटमेंट के लिए मायने रखता है। दूसरे प्रोग्रामों के लिए फ़ाइल ठीक करनी हो, तो एक्सपोर्ट बटन इस्तेमाल करें: आपको टेबल की साफ़ UTF-8 कॉपी मिलती है (मौजूदा व्यू की, इसलिए हर पंक्ति चाहिए तो पहले सर्च ख़ाली कर दें)। अगर आपकी समस्या बिगड़े अक्षर नहीं, बल्कि सारा डेटा एक कॉलम में आ जाना है, तो देखें CSV एक ही कॉलम में क्यों खुलती है।

समाधान 2: Excel में सही “File origin” के साथ इम्पोर्ट करें

फ़ाइल पर डबल-क्लिक न करें। इसके बजाय एक ख़ाली वर्कबुक खोलें और Data टैब का “From Text/CSV” इम्पोर्ट इस्तेमाल करें। प्रीव्यू विंडो में “File origin” की लिस्ट होती है, जहाँ आप एन्कोडिंग चुनते हैं:

इनके बीच बदलते रहें और प्रीव्यू देखें — जिस पल नाम सही दिखें, वही सही विकल्प है। फिर डेटा लोड करें। अगर फ़ाइल आगे भेजनी है, तो Excel से उसे सादे “CSV” की जगह “CSV UTF-8” फ़ाइल टाइप में सेव करें, क्योंकि सादा “CSV” फिर से पुरानी एन्कोडिंग इस्तेमाल कर सकता है।

समाधान 3: Google Sheets, LibreOffice या टेक्स्ट एडिटर

Google Sheets। Google Sheets में CSV इम्पोर्ट करना (File → Import) UTF-8 फ़ाइलों के साथ अच्छा चलता है, और इम्पोर्ट डायलॉग में सेपरेटर चुना जा सकता है। पुरानी एन्कोडिंग वाली फ़ाइलों के लिए यह उतना भरोसेमंद नहीं: अगर Windows-1251 या Windows-1252 एक्सपोर्ट में अब भी अक्षर बिगड़े दिखें, तो किसी दूसरे तरीके से उसे UTF-8 में बदलें और वह कॉपी इम्पोर्ट करें।

LibreOffice Calc। CSV खोलते ही LibreOffice टेक्स्ट इम्पोर्ट डायलॉग दिखाता है, जिसमें “Character set” की लिस्ट होती है। Unicode (UTF-8), Cyrillic (Windows-1251) या Western Europe (Windows-1252) चुनें और प्रीव्यू तुरंत बदल जाता है। यह फ़्री है और Windows, macOS और Linux पर चलता है।

टेक्स्ट एडिटर। Windows का Notepad, macOS का TextEdit या VS Code जैसे कोड एडिटर सेव करते समय एन्कोडिंग चुनने देते हैं। पेच यह है: एडिटर को पहले फ़ाइल सही एन्कोडिंग के साथ खोलनी होगी। अगर एडिटर में टेक्स्ट सही दिखता है, तो उसे UTF-8 में सेव करें। अगर वहाँ भी बिगड़ा दिख रहा है, तो सेव करने से बस कचरा ही सुरक्षित रहेगा — पहले सही एन्कोडिंग के साथ फिर से खोलें।

अक्सर पूछे जाने वाले सवाल

क्या मैं अपनी CSV में “????” ठीक कर सकता हूँ?

आम तौर पर नहीं। सवालिया निशान का मतलब है कि फ़ाइल लिखते समय अक्षर बदल दिए गए, इसलिए मूल अक्षर फ़ाइल में हैं ही नहीं। अकाउंटिंग सॉफ़्टवेयर या बैंक से दोबारा एक्सपोर्ट करें, और हो सके तो UTF-8 चुनें।

सेव या एक्सपोर्ट करते समय कौन-सी एन्कोडिंग इस्तेमाल करूँ?

UTF-8। यह हर लिपि रखता है, और हर आधुनिक प्रोग्राम इसे समझता है। अगर सहकर्मी इसे Excel में डबल-क्लिक करके खोलते हैं, तो Excel का “CSV UTF-8” विकल्प इस्तेमाल करें, ताकि फ़ाइल BOM से शुरू हो।

क्या एन्कोडिंग बदलने से मेरे नंबर बदल जाएँगे?

नहीं। अंक, बिंदु और कॉमा UTF-8, Windows-1251 और Windows-1252 में एक जैसे होते हैं, इसलिए रकम और तारीख़ों पर कोई असर नहीं पड़ता। सिर्फ़ साधारण अंग्रेज़ी से बाहर के अक्षर बदलते हैं।

क्या बैंक एक्सपोर्ट को ऑनलाइन ठीक करना सुरक्षित है?

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