क्या एक्सेल को UTF-8 CSV फ़ाइलों को स्वचालित रूप से पहचानने के लिए बाध्य करना संभव है?


455

मैं एक एप्लिकेशन का एक हिस्सा विकसित कर रहा हूं जो CSV फ़ाइलों में कुछ डेटा निर्यात करने के लिए जिम्मेदार है। आवेदन हमेशा सभी स्तरों पर अपनी बहुभाषी प्रकृति के कारण UTF-8 का उपयोग करता है। लेकिन एक्सेल में ऐसी सीएसवी फाइलें (उदाहरण के लिए डायटिकटिक्स, सिरिलिक लेटर्स, ग्रीक अक्षर) खोलने से अपेक्षित परिणाम प्राप्त नहीं होता है Г„/Г¤, Г–/Г¶। और मुझे नहीं पता कि एक्सेल को कैसे मजबूर किया जाए, यह समझें कि खुला CSV फ़ाइल UTF-8 में एन्कोडेड है। मैंने UTF-8 BOM को निर्दिष्ट करने का भी प्रयास किया EF BB BF, लेकिन एक्सेल उस पर ध्यान नहीं देता है।

क्या कोई वर्कअराउंड है?

PS कौन से उपकरण संभावित रूप से व्यवहार कर सकते हैं जैसे एक्सेल करता है?


अपडेट करें

मेरा कहना है कि मैंने प्रश्न के सूत्रीकरण के साथ समुदाय को भ्रमित किया है। जब मैं यह सवाल पूछ रहा था, तो मैंने एक उपयोगकर्ता के लिए बिना किसी समस्या के, एक धाराप्रवाह और पारदर्शी तरीके से Excel में UTF-8 CSV फ़ाइल खोलने का तरीका पूछा। हालाँकि, मैंने एक गलत फॉर्म्युलेशन का उपयोग किया था जो इसे स्वचालित रूप से करने के लिए कहता है । यह बहुत भ्रामक है और यह VBA मैक्रो स्वचालन के साथ टकराता है। इस प्रश्न के दो उत्तर हैं जिनकी मैं सबसे अधिक सराहना करता हूं: एलेक्स https://stackoverflow.com/a/6002338/166589 द्वारा पहला उत्तर , और मैंने इस उत्तर को स्वीकार कर लिया है; और मार्क https://stackoverflow.com/a/6488070/166589 द्वारा दूसरावह थोड़ी देर बाद दिखाई दिया। प्रयोज्य दृष्टि से, एक्सेल के पास एक अच्छा उपयोगकर्ता-अनुकूल UTF-8 CSV समर्थन की कमी थी, इसलिए मुझे लगता है कि दोनों उत्तर सही हैं, और मैंने पहले एलेक्स के उत्तर को स्वीकार कर लिया है क्योंकि यह वास्तव में कहा गया है कि एक्सेल करने में सक्षम नहीं था। पारदर्शी रूप से। यह वही है जो मैंने यहाँ स्वचालित रूप से भ्रमित किया है। मार्क का उत्तर अपेक्षित परिणाम प्राप्त करने के लिए अधिक उन्नत उपयोगकर्ताओं के लिए अधिक जटिल तरीके को बढ़ावा देता है। दोनों जवाब बहुत अच्छे हैं, लेकिन एलेक्स ने कहा कि मेरा स्पष्ट रूप से निर्दिष्ट प्रश्न थोड़ा बेहतर नहीं है।


अद्यतन २

अंतिम संपादन के पांच महीने बाद, मैंने देखा है कि एलेक्स का जवाब किसी कारण से गायब हो गया है। मैं वास्तव में आशा करता हूं कि यह एक तकनीकी समस्या नहीं थी और मुझे आशा है कि अब और कोई चर्चा नहीं है जिस पर उत्तर अधिक है। इसलिए मैं मार्क के उत्तर को सर्वश्रेष्ठ के रूप में स्वीकार कर रहा हूं।


1
क्या आप टैब-सीमांकित फ़ाइलों का उपयोग कर सकते हैं? यदि ऐसा है, तो आपके पास अधिक भाग्य हो सकता है।
टिम पेरी

8
कार्यालय 2010+: सबसे अच्छा काम करता है: BOM के साथ और \tपरिसीमन के रूप में UTF-16LE । अंग्रेजी और गैर अंग्रेजी एक्सेल सेटिंग में काम करेगा। Ctrl-Sफ़ाइल प्रारूप का चयन किए बिना प्रेस कर सकते हैं , आदि यूनिकोड वर्ण संरक्षित करेंगे।
सेबस्टियन

@ डंकन सच कह रहा हूँ, मैं भ्रमित हूँ और यह "न्याय करने के लिए" कठिन है। मैंने 2 साल पहले (14 मई को क्यू और ए दोनों) से अधिक एलेक्स का जवाब स्वीकार कर लिया है, और फिर मार्क ने एक मुश्किल वर्कअराउंड का सुझाव दिया (मैंने वास्तव में इसकी जांच नहीं की) कि आश्चर्यजनक रूप से मेरे सवाल पर अधिक अंक बनाए जो आश्चर्यजनक रूप से बन गए। साथ ही लोकप्रिय है। हमने वास्तव में एक्सेल समर्थन को लंबे समय पहले अपनी परियोजना में अस्वीकार कर दिया था, और मैं एलेक्स के प्रतिष्ठा स्कोर को दूर नहीं करना चाहता, क्योंकि एक्सेल लग रहा था, और शायद अभी भी लगता है (कृपया मुझे सही करें अगर मैं गलत हूं), सीएसवी को गलत करने के लिए। यह कहना कठिन है, क्षमा करें।
हुसोमिर शयदैरिव

2
एलेक्स का जवाब एक मॉडरेटर द्वारा हटा दिया गया था। कोई स्पष्टीकरण नहीं दिया गया था, लेकिन अगर आपके पास पर्याप्त प्रतिष्ठा है तो आप अभी भी इसे देख सकते हैं।
मार्क रैनसम

1
चूंकि टाइम मशीन अभी तक मौजूद नहीं है, इसलिए सिर्फ असहमत होना है।
osexpert

जवाबों:


398

एलेक्स सही है, लेकिन जैसा कि आपको सीएसवी को निर्यात करना है, आप उपयोगकर्ताओं को सीएसवी फाइलें खोलते समय यह सलाह दे सकते हैं:

  1. एक सीएसवी के रूप में निर्यात की गई फ़ाइल को सहेजें
  2. एक्सेल खोलें
  3. डेटा का उपयोग करके डेटा आयात करें -> बाहरी डेटा आयात करें -> डेटा आयात करें
  4. "सीएसवी" फ़ाइल प्रकार चुनें और अपनी फ़ाइल ब्राउज़ करें
  5. आयात विज़ार्ड में File_Origin को "65001 UTF" में बदलें (या सही भाषा वर्ण पहचानकर्ता चुनें)
  6. Delimiter को अल्पविराम में बदलें
  7. चुनें कि कहां से आयात करें और कैसे समाप्त करें

इस तरह से विशेष पात्रों को सही ढंग से दिखाना चाहिए।


163

UTF-8 बाइट-ऑर्डर मार्कर Excel 2007+ को इस तथ्य से जोड़ देगा कि आप UTF-8 का उपयोग कर रहे हैं। ( यह एसओ पद देखें )।

मामले में किसी के पास वही मुद्दे हैं जो मैं था। .NET का UTF8 एन्कोडिंग वर्ग GetBytes()कॉल में बाइट-ऑर्डर मार्कर को आउटपुट नहीं करता है । आउटपुट को BOM प्राप्त करने के लिए आपको स्ट्रीम (या वर्कअराउंड का उपयोग करने) की आवश्यकता होती है।


18
UTF-8 BOM को सम्मिलित करने का तरीका जाना जाता है। इसके बाद यह पारदर्शी है।
vy32 15

12
मैं नोटपैड ++ का उपयोग आसानी से .csv UTF-8कोUTF-8 with BOM
Sébastien

3
हाँ - सबसे अच्छा समाधान। HTTP प्रतिक्रियाओं में हेडर स्थापित करने के आसपास भ्रमित करने वाले पोस्ट। इससे समस्या हल हो जाती है। नोटपैड में फ़ाइल खोलने और UTF-8 विकल्प का उपयोग करके दाईं ओर नीचे की ओर सहेजने पर समान देखा जा सकता है। बाइट-ऑर्डर मार्कर भी जोड़ता है।
user369142

1
@Elmue: मुझे लगा (शायद मेरी तरह) उसने सोचा कि वह इसे बाइट-ऑर्डर मार्कर के साथ बचा रहा है, लेकिन ऐसा नहीं था क्योंकि कुछ पुस्तकालय काम नहीं करते थे, उन्होंने सोचा कि यह कैसे किया। मुझे यह उत्तर जोड़ना उचित लगा, और जाहिर है कि कई अन्य लोगों ने भी इसे उपयोगी पाया है। किसी भी दर पर, यह CSV का उपयोग न करने, या उपयोगकर्ताओं को निर्देश देने की तुलना में बेहतर तरीके से लगता है कि फ़ाइल को कुछ विचित्र तरीके से कैसे खोलें।
स्ट्रिपिंगवर्यर

1
एक्सेल का मैक संस्करण अभी भी बीओएम को नजरअंदाज करता है। (एक्सेल फॉर मैक 2011.)
थॉमस एंड्रयूज

74

नजरअंदाज BOM के साथ बग एक्सेल 2013 के लिए तय किया जा रहा है। मुझे सिरिलिक अक्षरों के साथ एक ही समस्या थी, लेकिन बीओएम चरित्र को जोड़ने से मुझे \uFEFFमदद मिली।


8
चूँकि मैंने अपनी CSV फ़ाइल (जावा में उत्पन्न) की शुरुआत में \ uFEFF जोड़ा, एक्सेल उन्हें सही ढंग से खोलने में सक्षम है! Thx
गाल्डो सेप

16
कि मेरी समस्या भी हल हो गई है, php में यह इस तरह दिखता है $utf8_with_bom = chr(239) . chr(187) . chr(191) . $csvText:;
अब्दुल्ला

@updola इस टिप्पणी के लिए बहुत बहुत धन्यवाद, मुझे घंटे बचाए
nathan hayfield

UTF-8, परिभाषा के अनुसार, BOM वर्णों का उपयोग नहीं करता है और न ही करना चाहिए। जिस तरह से Excel ने यूओएम पर यूटीएफ -8 का लाभ पढ़ता है, जो एएससीआईआई के साथ पीछे की संगतता है। BOM जोड़ने से Excel कार्य करेगा, लेकिन अन्य उचित UTF-8 / ASCII फ़ाइल रीड को तोड़ देगा।
नेल्सन

1
\ FE \ FF मैक ओएस एक्सेल 2016 को जापानी चित्रलिपि के रूप में पूरी फ़ाइल बनाता है।
नकीलोन

56

यह अविश्वसनीय है कि बहुत सारे उत्तर हैं, लेकिन कोई भी सवाल का जवाब नहीं देता है:

"जब मैं यह सवाल पूछ रहा था, तो मैंने एक्सेल में एक उपयोगकर्ता के लिए बिना किसी समस्या के UTF-8 CSV फ़ाइल खोलने का तरीका पूछा।"

200+ अप-वोट के साथ स्वीकृत उत्तर के रूप में चिह्नित उत्तर मेरे लिए बेकार है क्योंकि मैं अपने उपयोगकर्ताओं को एक्सेल को कॉन्फ़िगर करने का तरीका नहीं देना चाहता। इसके अलावा: यह मैनुअल एक एक्सेल संस्करण पर लागू होगा लेकिन अन्य एक्सेल संस्करणों में अलग-अलग मेनू और कॉन्फ़िगरेशन डायलॉग हैं। आपको प्रत्येक एक्सेल संस्करण के लिए एक मैनुअल की आवश्यकता होगी।

तो सवाल यह है कि एक्सेल शो UTF8 डेटा को साधारण डबल क्लिक के साथ कैसे बनाया जाए?

अच्छी तरह से कम से कम एक्सेल 2007 में यह संभव नहीं है यदि आप CSV फ़ाइलों का उपयोग करते हैं क्योंकि UTF8 BOM को अनदेखा किया गया है और आपको केवल कचरा दिखाई देगा। यह पहले से ही कोंगोमेयर शादारिव के सवाल का हिस्सा है:

"मैंने UTF-8 BOM EF BB BF को निर्दिष्ट करने का भी प्रयास किया, लेकिन Excel उस पर ध्यान नहीं देता है।"

मैं एक ही अनुभव करता हूं: रूसी या ग्रीक डेटा को UTF8 CSV फ़ाइल में BOM के साथ एक्सेल में कचरे में लिखना:

UTF8 CSV फ़ाइल की सामग्री:

Colum1;Column2
Val1;Val2
Авиабилет;Tλληνικ

Excel 2007 में परिणाम:

CSV UTF8 Excel

एक समाधान सीएसवी का उपयोग नहीं करना है। यह प्रारूप Microsoft द्वारा इतनी बेवकूफी से लागू किया जाता है कि यह नियंत्रण कक्ष में क्षेत्र सेटिंग्स पर निर्भर करता है यदि अल्पविराम या अर्धविराम को विभाजक के रूप में उपयोग किया जाता है। तो वही CSV फ़ाइल एक कंप्यूटर पर सही ढंग से खुल सकती है लेकिन अन्य कंप्यूटर पर नहीं। "CSV" का अर्थ है " कोमा सेपरेटेड वैल्यूज़" लेकिन उदाहरण के लिए, डिफ़ॉल्ट अर्धविराम द्वारा जर्मन विंडोज पर विभाजक के रूप में उपयोग किया जाना चाहिए, जबकि अल्पविराम काम नहीं करता है। (यहाँ इसे SSV = अर्धविराम सेपरेटेड वेल्यूज़ नाम दिया जाना चाहिए) CSV फ़ाइलों को विंडोज के विभिन्न भाषा संस्करणों के बीच नहीं बदला जा सकता है। यह UTF-8 समस्या के लिए एक अतिरिक्त समस्या है।

दशकों से एक्सेल मौजूद है। यह शर्म की बात है कि Microsoft इन सभी वर्षों में CSV आयात जैसी बुनियादी चीज़ को लागू करने में सक्षम नहीं था।


हालाँकि, यदि आप HTML फ़ाइल में समान मान रखते हैं और उस फ़ाइल को UTF8 फ़ाइल के रूप में BOM के साथ सहेजते हैं, तो फ़ाइल एक्सटेंशन XLS के साथ आपको सही परिणाम मिलेगा।

UTF8 XLS फाइल की सामग्री:

<table>
<tr><td>Colum1</td><td>Column2</td></tr>
<tr><td>Val1</td><td>Val2</td></tr>
<tr><td>Авиабилет</td><td>Tλληνικ</td></tr>
</table>

Excel 2007 में परिणाम:

UTF8 HTML एक्सेल

आप HTML में रंगों का भी उपयोग कर सकते हैं, जिसे एक्सेल सही ढंग से दिखाएगा।

<style>
.Head { background-color:gray; color:white; }
.Red  { color:red; }
</style>
<table border=1>
<tr><td class=Head>Colum1</td><td class=Head>Column2</td></tr>
<tr><td>Val1</td><td>Val2</td></tr>
<tr><td class=Red>Авиабилет</td><td class=Red>Tλληνικ</td></tr>
</table>

Excel 2007 में परिणाम:

UTF8 HTML एक्सेल

इस मामले में केवल तालिका में एक काली सीमा और रेखाएं होती हैं। यदि आप चाहते हैं कि सभी सेल ग्रिडलाइन प्रदर्शित करें तो यह HTML में भी संभव है:

<html xmlns:x="urn:schemas-microsoft-com:office:excel">
    <head>
        <meta http-equiv="content-type" content="text/plain; charset=UTF-8"/>
        <xml>
            <x:ExcelWorkbook>
                <x:ExcelWorksheets>
                    <x:ExcelWorksheet>
                        <x:Name>MySuperSheet</x:Name>
                        <x:WorksheetOptions>
                            <x:DisplayGridlines/>
                        </x:WorksheetOptions>
                    </x:ExcelWorksheet>
                </x:ExcelWorksheets>
            </x:ExcelWorkbook>
        </xml>
    </head>
    <body>
        <table>
            <tr><td>Colum1</td><td>Column2</td></tr>
            <tr><td>Val1</td><td>Val2</td></tr>
            <tr><td>Авиабилет</td><td>Tλληνικ</td></tr>
        </table>
    </body>
</html>

यह कोड यहां तक ​​कि वर्कशीट का नाम निर्दिष्ट करने की अनुमति देता है (यहां "MySuperSheet")

Excel 2007 में परिणाम:

यहां छवि विवरण दर्ज करें


1
और यह अविश्वसनीय है कि लोग अभी भी इसका जवाब देते हैं। :) हालांकि, मैं तर्क दूंगा कि CSV मर चुका है: CSV एक घातक सरल सादा स्ट्रीमिंग प्रारूप है, और, जब मैं उस परियोजना पर था, तो हमने इसे वास्तव में घटकों के इंटरैक्शन के लिए भी भारी उपयोग किया। मैं HTML प्रारूप का उपयोग कभी नहीं करूंगा क्योंकि इसकी बहुत अधिक प्रतिनिधित्व वाली प्रकृति है, और मैं कभी भी उस प्रोजेक्ट के निर्यात डेटा को HTML में एक्सेल के अनुकूल बनाने के लिए नहीं बना सकता था। एक्सेल ने UTF-8 CSV में चूसा, और उसके बाद से 5 साल के बाद मुझे कोई सुराग नहीं मिला। लेकिन मुझे लगता है कि अल्पविराम, अर्ध-बृहदान्त्र और टैब-सीमांकित फ़ाइलें सही पागलपन हैं, मुझे लगता है।
कोंगोमेयर शायडैरिव

5
यह अविश्वसनीय नहीं है कि लोग अभी भी आपके प्रश्न का उत्तर देते हैं क्योंकि Google उन्हें यहां लाता है: सभी एक ही प्रश्न के साथ: मुझे बेवकूफ एक्सेल कैसे करना है जो आप चाहते हैं? Google में 3 शब्द दर्ज करें: "excel csv utf8" और आपका प्रश्न FIRST परिणाम विश्वव्यापी है। आपने एक बेस्टसेलर लिखा है!
एल्म्यू

8
जब से आपने यह इंगित करने के लिए समय निकाला है कि कैसे कोई अन्य उत्तर यहाँ Excel को CSV फ़ाइल को सही ढंग से खोलने का कारण बनता है, यह ध्यान देने योग्य है कि यह उत्तर या तो ऐसा नहीं करता है। मूल रूप से स्वीकृत उत्तर (जो एक मॉडरेटर द्वारा हटा दिया गया था) ने डेटा को सीधे एक्सेल फ़ाइल में निर्यात करने, या HTML फ़ाइल को निर्यात करने और उपयोगकर्ताओं को एक्सेल में फ़ाइल खोलने की अनुमति देने की सिफारिश की। एक्सएलएस फ़ाइल एक्सटेंशन के साथ HTML फ़ाइल को सहेजने की तुलना में या तो उन समाधानों को कम हैक किया जाता है, लेकिन कोई भी उत्तर प्रस्तावित नहीं किया गया है जो वास्तव में प्रश्न का उत्तर देता है।
स्ट्रिपलिंगवर्यर

3
@ व्यक्ति: ".. लेकिन कोई जवाब नहीं प्रस्तावित किया गया है जो वास्तव में सवाल का जवाब देता है।" यह सही नहीं है। मैंने उस सवाल का जवाब दिया है: कम से कम एक्सेल 2007 के साथ यह पॉसिबल नहीं है। यह निश्चित उत्तर है। यदि Excel UTF8 BOM को अनदेखा करता है और ANSI के रूप में डेटा की व्याख्या करता है, तो फ़ाइल में एक साधारण डबल क्लिक द्वारा CSV के माध्यम से Excel में उदाहरण के लिए ग्रीक या रूसी पाठ आयात करने का कोई तरीका नहीं है (जो सवाल था: "उपयोगकर्ता के लिए कोई समस्या नहीं है" )। मैं जो प्रस्ताव करता हूं वह एक कार्यशील समाधान है जो सभी एक्सेल संस्करणों के साथ डबल क्लिक के साथ कार्य करता है और एक्सेल के मेनू में अतिरिक्त चरणों की आवश्यकता नहीं होती है।
13

2
इतना ही नहीं इस सवाल का जवाब नहीं है, यह सीएसवी "विरासत" और "मृत" बताने के लिए पूरी तरह से गलत है। सिर्फ इसलिए कि आप इसके लिए उपयोग नहीं देखते हैं, इसका मतलब यह नहीं है कि यह मर चुका है। इसके अलावा, आप स्पष्ट रूप से यह नहीं समझते हैं कि यह इतिहास है या आज इसका व्यापक रूप से उपयोग कैसे किया जाता है। यह एक्सएमएल (छोटे पैकेट आकार के कारण) से बेहतर है और यहां मुद्दा यह है कि कैसे Microsoft यूटीएफ 8 प्रारूप के लिए एक मानक का पालन नहीं करता है। सही उत्तर खुले कार्यालय का उपयोग करना होगा और Microsoft का नहीं क्योंकि Microsoft पहले स्थान पर एन्कोडिंग में कभी अच्छा नहीं रहा।
जेरेमी

49

हमने इस वर्कअराउंड का उपयोग किया है:

  1. CSV को UTF-16 LE में बदलें
  2. फ़ाइल की शुरुआत में BOM डालें
  3. फ़ील्ड विभाजक के रूप में टैब का उपयोग करें

1
धन्यवाद! मैंने इस धागे में अन्य सभी उत्तर देने की कोशिश की, लेकिन यूटीएफ -8 में परिवर्तित करने से काम नहीं चला। जब मैंने BOM के साथ UTF-16 की कोशिश की तो यह तुरंत काम कर गया।
हस्की

एक्सेल के लिए मैक 2011 के लिए मैं UTF-16 छोटी एंडियन सीएसवी फाइलों के साथ सफल रहा था
बहुआयामी

धन्यवाद, यह समाधान मेरे उपयोगकर्ताओं को एक यूनिकोड सीएसवी देने के लिए उत्कृष्ट है जो वे एक्सेल में खोल सकते हैं।
user1073075

21

PHP- उत्पन्न CSV फ़ाइलों के साथ एक ही समस्या थी। जब "sep=,\n"सामग्री की शुरुआत में विभाजक को परिभाषित किया गया था (लेकिन निश्चित रूप से BOM के बाद) एक्सेल ने BOM को अनदेखा कर दिया ।

इसलिए "\xEF\xBB\xBF"सामग्री की शुरुआत में एक बीओएम ( ) जोड़ना और अर्धविराम को विभाजक के रूप में सेट fputcsv($fh, $data_array, ";");करना चाल के माध्यम से करता है।


13

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

मैं स्वचालित रूप से UTF-8 को पहचानने के लिए एक्सेल प्राप्त करने के लिए कोई भी तरीका खोजने में विफल रहा, और मैं उन जटिल निर्देशों को फाइलों के उपभोक्ताओं पर प्रलोभन देने में सक्षम / सक्षम नहीं था जो उन्हें कैसे खोलें। इसलिए मैंने उन्हें UTF-8 के बजाय UTF-16le (BOM के साथ) के रूप में एन्कोड किया। दो बार आकार, लेकिन एक्सेल एन्कोडिंग को पहचान सकता है। और वे अच्छी तरह से संपीड़ित करते हैं, इसलिए आकार शायद ही कभी (लेकिन दुखद कभी नहीं) मायने रखता है।


यह एक पुराना सवाल है, लेकिन मुझे खुशी है कि लोग अब भी इसका जवाब देते हैं। धन्यवाद। :)
हुसोमिर शयदैरिव

1
@LyubomyrShaydariv: जब से मैंने इस प्रश्न का उत्तर दिया है, एक सहकर्मी ने मुझे बताया कि नवीनतम एक्सेल UTF-8 CSV फ़ाइलों की पहचान करता है बशर्ते उनके पास एक प्रारंभिक BOM हो। इसलिए कुछ वर्षों में, जब दुनिया में हर कोई (या वैसे भी, हर कोई जो हम फाइल वितरित करते हैं) एक्सेल या उस बेहतर संस्करण पर है, तो मैं अपने एन्कोडिंग को बदलने में सक्षम हो सकता हूं :-)
स्टीव जेसप

अजीब बात है, मेरे लिए यह काम नहीं करता है। पात्रों को चीनी प्रतीकों में बदल दिया जाता है ... (वे
हेबर के

जब मैंने "UTF-16 BE में BOM के साथ" सहेजा तो मेरे पास Excel में चीनी अक्षर थे। जब मैंने "UTF-16 LE BOM के साथ" कोशिश की तो यह काम कर गया! मैंने परीक्षण के लिए उदात्त पाठ का उपयोग किया।
हेन्नो

12

पुराना सवाल है, लेकिन सबसे सरल उपाय है:

  1. नोटपैड में CSV खोलें
  2. इस रूप में सहेजें -> सही एन्कोडिंग का चयन करें
  3. नई फ़ाइल खोलें

1
आप किस एक्सेल संस्करण का उपयोग करते हैं?
हुसोमिर शयदैरिव

1
शानदार, बस काम करता है और समस्या को हल करता है (कम से कम मेरे लिए)
ऑबेरॉन वचर

1
नहींं, क्योंकि समस्या एक्सेल को खोलना है। Csv फ़ाइल को csv फ़ाइल के रूप में। मेरा मतलब है, मेरे पास एक प्रक्रिया है जहां मैं सीएसवी फाइलें उत्पन्न करता हूं। तब उपयोगकर्ता को केवल फाइलें खोलने की आवश्यकता होगी। यहाँ उसे इससे अधिक करने की आवश्यकता है।
विवेके

2
@ यदि आप नियमित आधार पर फाइलें उत्पन्न करते हैं तो यह सबसे अच्छा समाधान नहीं है। लेकिन अगर यह एकतरफा है, तो यह जवाब एकदम सही है। यह काम करता है क्योंकि नोटपैड यूटीएफ -8 या यूटीएफ -16 फ़ाइल की शुरुआत में बीओएम डाल देगा।
मार्क रैनसम

एक जादू की तरह काम करता है। ((:
user2925795

10

जैसा कि मैंने http://thinkinginsoftware.blogspot.com/2017/12/correctly-generate-csv-that-excel-can.html पर पोस्ट किया है :

सॉफ्टवेयर डेवलपर को इसे सही करने के लिए CSV जेनरेट करने का प्रभारी बताएं। एक त्वरित वर्कअराउंड के रूप में आप स्ट्रिंग की शुरुआत में UTF-8 BOM डालने के लिए उपयोग कर सकते हैं:

gsed -i '1s/^\(\xef\xbb\xbf\)\?/\xef\xbb\xbf/' file.csv

यह आदेश यदि मौजूद नहीं है तो UTF-4 BOM सम्मिलित करता है। इसलिए यह एक उदासीन आज्ञा है। अब आपको फ़ाइल को डबल क्लिक करने और एक्सेल में खोलने में सक्षम होना चाहिए।


धन्यवाद यह तय है। मैंने सिर्फ csv ';' नोटपैड ++ में यूटीएफ-बीओएम को अलग कर दिया गया है और पता है कि एक्सेल इसे सही तरीके से खोलता है।
12

वास्तव में क्या जरूरत थी! यहाँ पर बताया गया है कि इसे PHP stackoverflow.com/questions/25686191/…
EFC

यह एक्सेल के लिए वर्कअराउंड है जो सीएसवी फाइलों में utf chareacters को नहीं पहचान सकता है। तो यह सुधार एक्सेल मुद्दे को ठीक करने के लिए।
cobp

यह एक्सेल 2007 ग्रीक संस्करण के लिए काम करता है, कॉमा सेपरेटर के साथ। धन्यवाद।
NameOfTheRose

Fs.createWriteStream (फ़ाइलनाम, {एन्कोडिंग: 'UTF-16le'}) में 'UTF-16le' के लिए एन्कोडिंग को बदला गया और एक्सेल ने CSV फ़ाइल को सही ढंग से खोला
rahul shukla

9

आप .epv फ़ाइल को नोटपैड ++ के माध्यम से BOM के साथ UTF-8 में परिवर्तित कर सकते हैं:

  1. फ़ाइल को नोटपैड ++ में खोलें ।
  2. मेनू पर जाएँ EncodingConvert to UTF-8
  3. मेनू पर जाएँ FileSave
  4. नोटपैड ++ बंद करें।
  5. Excel में फ़ाइल खोलें।

Microsoft Excel 2013 (15.0.5093.1000) MSO (15.0.5101.1000) 64-बिट Microsoft Office Professional Plus 2013 से विंडोज 8.1 पर गैर-यूनिकोड कार्यक्रमों के लिए लोकेल के साथ "जर्मन (जर्मनी)" पर सेट किया गया।


1
आपने जो कहा, वह बिल्कुल काम नहीं किया। परिवर्तित / एन्कोडिंग, चरित्र सेट करना, मेरे मामले में कुछ भी काम नहीं किया। Google शीट में फ़ाइल आयात करें, सीएसवी के रूप में डाउनलोड करें, त्रुटिपूर्ण रूप से काम किया। 2045 से आपका स्वागत है
pakalbekim

1
मुझे इसे एन्कोडिंग के साथ बदलना पड़ा -> सिनेवर्ट टी यूटीएफ-8-बीओएम एक्सेल संस्करण 2016
इगोर वुकोविक

4

Utf-8 टेक्स्ट और csv फ़ाइलों को खोलने के लिए सरल vba मैक्रो

Sub OpenTextFile()

   filetoopen = Application.GetOpenFilename("Text Files (*.txt;*.csv), *.txt;*.csv")
   If filetoopen = Null Or filetoopen = Empty Then Exit Sub

   Workbooks.OpenText Filename:=filetoopen, _
   Origin:=65001, DataType:=xlDelimited, Comma:=True

End Sub

उत्पत्ति: = 65001 UTF-8 है। कॉमा: कोलम्स में वितरित .csv फ़ाइलों के लिए सही है

Personal.xlsb में इसे हमेशा उपलब्ध रहने के लिए सहेजें। एक्सेल टूलबार को निजीकृत करें एक मैक्रो कॉल बटन और वहां से फाइल खोलें। आप स्तंभ ऑटोफ़िट, संरेखण, आदि जैसे मैक्रो में अधिक फ़ॉर्मेटिंग जोड़ सकते हैं।


2
धन्यवाद। दुर्भाग्य से, यह वास्तव में उन्नत एक्सेल उपयोगकर्ताओं के लिए सुझाव है, और जो मैं इस उद्देश्य से पूछ रहा हूं, यह प्रश्न एक्सेल अपने आप कर रहा है।
हासोमिर शायदरिव

मैंने इस कोड स्निपेट का उपयोग करने की कोशिश की, लेकिन यह मेरे लिए काम नहीं करता है। मैं एक्सेल 2013 का उपयोग करता हूं।
शरुनास बायल्किस

3

एक्सेल पर फ़ाइल खोलने में रुचि रखने वाले उपयोगकर्ताओं की मदद के लिए, जो मेरे जैसे इस धागे को प्राप्त करते हैं।

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

  1. Microsoft Excel 2007 खोलें।
  2. डेटा मेनू बार विकल्प पर क्लिक करें।
  3. From Text आइकन पर क्लिक करें।
  4. उस फ़ाइल के स्थान पर नेविगेट करें जिसे आप आयात करना चाहते हैं। फ़ाइल नाम पर क्लिक करें और फिर आयात बटन पर क्लिक करें। पाठ आयात विज़ार्ड - चरण 1 या 3 विंडो अब स्क्रीन पर दिखाई देगी।
  5. फ़ाइल प्रकार चुनें जो आपके डेटा का सबसे अच्छा वर्णन करता है - सीमांकित या निश्चित चौड़ाई।
  6. 65001 चुनें: फाइल उत्पत्ति के आगे दिखाई देने वाली ड्रॉप-डाउन सूची से यूनिकोड (UTF-8)।
  7. पाठ आयात विज़ार्ड - चरण 2 या 3 विंडो प्रदर्शित करने के लिए अगला बटन पर क्लिक करें।
  8. उस परिसीमन के बगल में एक चेकमार्क रखें, जिसका उपयोग उस फ़ाइल में किया गया था जिसे आप Microsoft Excel 2007 में आयात करना चाहते हैं। डेटा पूर्वावलोकन विंडो आपको दिखाएगी कि आपका डेटा आपके द्वारा चुने गए सीमांकक के आधार पर कैसे दिखाई देगा।
  9. पाठ आयात विज़ार्ड - चरण 3 का 3 प्रदर्शित करने के लिए अगला बटन पर क्लिक करें।
  10. डेटा के प्रत्येक स्तंभ के लिए उपयुक्त डेटा प्रारूप चुनें जिसे आप आयात करना चाहते हैं। यदि आप चाहते हैं कि आपके पास डेटा के एक या अधिक कॉलम आयात न करने का विकल्प भी है।
  11. Microsoft Excel 2007 में अपना डेटा आयात करने के लिए समाप्त बटन पर क्लिक करें।

स्रोत: https://www.itg.ias.edu/content/how-import-csv-file-use-utf-8-character-encoding-0


3

हां, यह संभव है। जैसा कि पहले कई उपयोगकर्ताओं द्वारा उल्लेख किया गया था, फ़ाइल को UTF-8 में एन्कोड किए जाने पर सही बाइट ऑर्डर मार्क को पढ़ने में एक्सेल के साथ एक समस्या प्रतीत होती है। UTF-16 के साथ इसमें कोई समस्या नहीं है, इसलिए यह UTF-8 के लिए स्थानिक है। इसके लिए मैं जिस समाधान का उपयोग करता हूं, वह BOM, TWICE जोड़ रहा है। इसके लिए मैं निम्नलिखित सेड कमांड को दो बार निष्पादित करता हूं:

sed -I '1s/^/\xef\xbb\xbf/' *.csv

, जहां वाइल्डकार्ड को किसी भी फ़ाइल नाम से बदला जा सकता है। हालाँकि, यह .pv फ़ाइल की शुरुआत में sep = का म्यूटेशन करता है। .Csv फ़ाइल फिर एक्सेल में सामान्य रूप से खुलेगी, लेकिन पहली सेल में "sep =" के साथ एक अतिरिक्त पंक्ति के साथ। स्रोत में "sep =" को भी हटाया जा सकता है। स्वयं ही, लेकिन VBA के साथ फाइल खोलने पर सीमांकक निर्दिष्ट किया जाना चाहिए:

Workbooks.Open(name, Format:=6, Delimiter:=";", Local:=True)

प्रारूप 6 .csv प्रारूप है। फ़ाइल में दिनांक होने की स्थिति में स्थानीय को सही पर सेट करें। यदि स्थानीय सही करने के लिए सेट नहीं है, तो तारीखें अमेरिकीकृत हो जाएंगी, जो कुछ मामलों में .csv प्रारूप को दूषित कर देंगी।


1
जब sed कमांड चल रही है, तो मुझे: "sed: अमान्य विकल्प - 'I'", मुझे लगता है कि यह 'i' होना चाहिए
BiAiB

2

यह मेरा कार्य समाधान है:

vbFILEOPEN = "your_utf8_file.csv"
Workbooks.OpenText Filename:=vbFILEOPEN, DataType:=xlDelimited, Semicolon:=True, Local:=True, Origin:=65001

मूल है: = 65001


2

हाँ यह संभव है। सीएसवी बनाने वाली धारा लिखते समय, पहली बात यह है:

myStream.Write(Encoding.UTF8.GetPreamble(), 0, Encoding.UTF8.GetPreamble().Length)

आपने प्रश्न नहीं पढ़ा! हुसोमिर शायदैरिव ने लिखा: "मैंने UTF-8 BOM EF BB BF को निर्दिष्ट करने का भी प्रयास किया, लेकिन Excel ने इसे अनदेखा कर दिया।"
एल्म्यू

यह वर्किंग कोड है। यदि आप इस लीड के साथ .Net अनुप्रयोगों से UTF-8 फाइल लिखते हैं, तो Excel फ़ाइल को UTF8 के रूप में मान्यता देगा।
zax

आपके एक्सेल में यह काम कर सकता है। लेकिन कम से कम एक्सेल 2007 में BOM को पूरी तरह से नजरअंदाज कर दिया गया है। इसलिए यदि आप एक कोड लिखने का इरादा रखते हैं जो सभी एक्सेल संस्करणों पर काम करता है तो आपका कोड उपयोगी नहीं है।
एल्म्यू

2

उत्तर की वास्तव में आश्चर्यजनक सूची, लेकिन चूंकि एक बहुत अच्छा एक अभी भी गायब है, मैं इसका उल्लेख यहां करूंगा: Google शीट के साथ सीएसवी फ़ाइल खोलें और इसे अपने स्थानीय कंप्यूटर पर एक्सेल फ़ाइल के रूप में वापस सहेजें।

Microsoft के विपरीत, Google UTF-8 csv फ़ाइलों का समर्थन करने में कामयाब रहा है, इसलिए यह केवल वहाँ फ़ाइल खोलने का काम करता है। और एक्सेल प्रारूप में निर्यात भी सिर्फ काम करता है। तो भले ही यह सभी के लिए पसंदीदा समाधान न हो, लेकिन यह बहुत ही सुरक्षित है और क्लिक की संख्या उतनी अधिक नहीं है जितनी कि यह ध्वनि हो सकती है, खासकर जब आप पहले से ही वैसे भी Google में लॉग इन हैं।


2

यह सटीक रूप से प्रश्न को संबोधित नहीं कर रहा है, लेकिन जब से मैं इस पर ठोकर खाई है और उपरोक्त समाधान मेरे लिए काम नहीं किया था या आवश्यकताओं को पूरा नहीं कर सकता था, यहाँ एक और तरीका बीओएम को जोड़ने का है जब आपके पास पहुंच है:

vim -e -s +"set bomb|set encoding=utf-8|wq" filename.csv

2

मैं सीएसवी पीढ़ी के लिए रेल पर रूबी का उपयोग कर रहा हूँ। हमारे आवेदन में हम बहु भाषा (I18n) के लिए जाने की योजना बनाते हैं और हमने विंडोज़ एक्सेल के CSV फ़ाइल में I18n सामग्री को देखने के दौरान एक समस्या का सामना किया।

लिनक्स (उबंटू) और मैक के साथ ठीक था।

हमने पहचाना कि वास्तविक डेटा को देखने के लिए विंडोज़ एक्सेल को फिर से डेटा आयात करने की आवश्यकता है। आयात करते समय हमें चरित्र सेट चुनने के लिए अधिक विकल्प मिलेंगे।

लेकिन यह प्रत्येक उपयोगकर्ता के लिए शिक्षित नहीं किया जा सकता है, इसलिए हम जिस समाधान की तलाश कर रहे हैं वह सिर्फ डबल क्लिक करके खोलना है।

तब हमने ओपन मोड द्वारा डेटा दिखाने के तरीके की पहचान की और aghuddleston gist की मदद से windows excel में बम बनाया । संदर्भ में जोड़ा गया।

उदाहरण I18n सामग्री

मैक और लिनक्स में

स्वीडिश: फ़ोरनम अंग्रेज़ी: पहला नाम

विंडोज में

स्वीडिश: Fānrnamn अंग्रेजी: पहला नाम

def user_information_report(report_file_path, user_id)
    user = User.find(user_id)
    I18n.locale = user.current_lang
    open_mode = "w+:UTF-16LE:UTF-8"
    bom = "\xEF\xBB\xBF"
    body user, open_mode, bom
  end

def headers
    headers = [
        "ID", "SDN ID",
        I18n.t('sys_first_name'), I18n.t('sys_last_name'), I18n.t('sys_dob'),
        I18n.t('sys_gender'), I18n.t('sys_email'), I18n.t('sys_address'),
        I18n.t('sys_city'), I18n.t('sys_state'), I18n.t('sys_zip'),
        I18n.t('sys_phone_number')
    ]
  end

def body tenant, open_mode, bom
    File.open(report_file_path, open_mode) do |f|
      csv_file = CSV.generate(col_sep: "\t") do |csv|
        csv << headers
        tenant.patients.find_each(batch_size: 10) do |patient|
          csv <<  [
              patient.id, patient.patientid,
              patient.first_name, patient.last_name, "#{patient.dob}",
              "#{translate_gender(patient.gender)}", patient.email, "#{patient.address_1.to_s} #{patient.address_2.to_s}",
              "#{patient.city}", "#{patient.state}",  "#{patient.zip}",
              "#{patient.phone_number}"
          ]
        end
      end
      f.write bom
      f.write(csv_file)
    end
  end

यहां ध्यान देने योग्य महत्वपूर्ण चीजें हैं ओपन मोड और बम

open_mode = "w +: UTF-16LE: UTF-8"

बम = "\ xEF \ xBB \ xBF"

CSV लिखने से पहले BOM डालें

f.राइट बम

f.write (csv_file)

विंडोज और मैक

फ़ाइल को डबल क्लिक करके सीधे खोला जा सकता है।

लिनक्स (ubuntu)

फ़ाइल खोलते समय विभाजक विकल्पों के लिए पूछें -> "टैब" चुनें यहां छवि विवरण दर्ज करें


1

मैंने कुछ दिन पहले भी इसी समस्या का सामना किया था, और कोई समाधान नहीं ढूंढ पाया क्योंकि मैं इस import from csvसुविधा का उपयोग नहीं कर सकता क्योंकि यह सब कुछ स्ट्रिंग के रूप में स्टाइल करता है।

मेरा समाधान पहले नोटपैड ++ और के साथ फाइल को खोलने का था change the encode to ASCII। फिर बस फ़ाइल को एक्सेल में खोला और यह उम्मीद के मुताबिक काम किया।


1

Php में आप बस $ बम को अपने $ csv_string में प्रस्तुत करते हैं:

$bom = sprintf( "%c%c%c", 239, 187, 191); // EF BB BF
file_put_contents( $file_name, $bom . $csv_string );

एमएस एक्सेल 2016 के साथ परीक्षण किया गया, php 7.2.4


0

यह एक पुराना सवाल है, लेकिन मुझे अभी भी ऐसी ही समस्या है और इसका समाधान दूसरों की मदद कर सकता है:

एक ही मुद्दा था जहाँ CSV पाठ डेटा को किसी फ़ाइल में लिखना, फिर परिणामस्वरूप खोलना। Excel में सभी पाठ को एक एकल कॉलम में स्थानांतरित करता है। उपरोक्त उत्तरों को पढ़ने के बाद मैंने निम्नलिखित कोशिश की, जो समस्या को हल करने के लिए लगता है।

जब आप अपना StreamWriter बनाते हैं तो UTF-8 की एन्कोडिंग लागू करें। बस।

उदाहरण:

using (StreamWriter output = new StreamWriter(outputFileName, false, Encoding.UTF8, 2 << 22)) {
   /* ... do stuff .... */
   output.Close();
}

@ थोड़ी देखभाल के लिए थोड़ा विस्तार? निश्चित रूप से शुरू करने के लिए सही एन्कोडिंग का उपयोग करके सीएसवी को आउटपुट करना सुनिश्चित करता है कि वर्कफ़्लो में बाद में एक्सेल के साथ कोई संगतता समस्या नहीं है?
रेक्स

कोड गलत है क्योंकि आपको आउटपुट की आवश्यकता नहीं है। यदि आप का उपयोग () स्टेटमेंट है तो ()। इसके अलावा एक्सेल सीएसवी इनपोर्ट बहुत आदिम है। मैं इसका इस्तेमाल बिल्कुल नहीं करूंगा। यदि आप Excel में आयात करना चाहते हैं तो इसके बजाय HTML तालिका का उपयोग करें और इसे Excel में खोलें।
एल्म्यू

@Elmue को स्पष्ट करने के लिए धन्यवाद - दुर्भाग्य से मैं कई परिदृश्यों (नेटवर्क ड्राइव में फ़ाइलों सहित) में चला गया हूं, जहां निपटान के साथ-साथ स्पष्ट रूप से आवश्यक है । एक कारण नहीं मिला, जैसा कि मुझे लगता है कि मुझे स्टैक Close()में एक कॉल देखकर याद है Disposeलेकिन हम वहां जाते हैं। CSV आयात के बारे में आप अपने कथन में भी गलत हैं, क्योंकि यह आपके द्वारा सुझाए गए अक्षम HTML दृष्टिकोण की आवश्यकता नहीं है। वास्तव में सादा-पाठ डेटा लेने के लिए अतिरिक्त प्रोग्रामेटिक चरणों का निर्माण, HTML में बदलना, फिर एक्सेल में खींचना काउंटर सहज लगता है
Rex

जारी ... हालांकि, अलग-अलग परिदृश्यों की अलग-अलग आवश्यकताएं हैं और मेरा उदाहरण सही ढंग से दिखाता है कि एन्कोडिंग को कैसे निर्दिष्ट किया जाए क्योंकि ओपी ने अनुरोध किया था
रेक्स

कृपया मूल प्रश्न को फिर से पढ़ें: "मैंने UTF-8 BOM EF BB BF को निर्दिष्ट करने का भी प्रयास किया, लेकिन Excel इसे अनदेखा करता है।" मैंने उसी का परीक्षण किया और उसी परिणाम पर आते हैं: Excel UTf8 BOM को नहीं पहचानता है। कोशिश करो! CSV फ़ाइल लिखें और उसमें ग्रीक या रूसी वर्णक डालें। फिर एक्सेल में खोलें और आप को गार्बेज मिलेगा। तो आपके जवाब से कुछ हल नहीं होता।
एल्म्यू

0

यदि आप इसे पूरी तरह से स्वचालित बनाना चाहते हैं, तो एक क्लिक करें, या एक वेब पेज कहने से एक्सेल में स्वचालित रूप से लोड करने के लिए, लेकिन उचित एक्सेल फ़ाइलों को उत्पन्न नहीं कर सकता है, तो मैं एक विकल्प के रूप में SYLK प्रारूप को देखने का सुझाव दूंगा। ठीक है, यह CSV की तरह सरल नहीं है लेकिन यह पाठ आधारित है और इसे लागू करना बहुत आसान है और यह बिना किसी समस्या के UTF-8 का समर्थन करता है।

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

एक साधारण स्प्रेडशीट बनाकर और SYLK के रूप में सेव करके और फिर इसे टेक्स्ट एडिटर के साथ पढ़कर SYLK को रिवर्स करना आसान है। पहला ब्लॉक हेडर और मानक संख्या प्रारूप हैं जिन्हें आप पहचानेंगे (जो आप अभी बनाए गए प्रत्येक फ़ाइल में पुन: व्यवस्थित करते हैं), फिर डेटा बस एक एक्स / वाई समन्वय और एक मूल्य है।


0
  1. लिब्रे ऑफिस Calc डाउनलोड और इंस्टॉल करें
  2. LibreOffice Calc में अपनी पसंद की csv फाइल खोलें
  3. एक आयात पाठ विज़ार्ड दिखाता है कि आकाश को धन्यवाद ...
  4. ... अपने सीमांकक और वर्ण एन्कोडिंग विकल्पों का चयन करें
  5. Calc में परिणामी डेटा का चयन करें और एक्सेल में कॉपी पेस्ट करें

0

मैं एक साधारण सी # एप्लिकेशन से सीएसवी फाइलें उत्पन्न कर रहा हूं और उसी समस्या थी। मेरा समाधान यह सुनिश्चित करने के लिए था कि फ़ाइल को UTF8 एन्कोडिंग के साथ लिखा गया है, जैसे:

// Use UTF8 encoding so that Excel is ok with accents and such.
using (StreamWriter writer = new StreamWriter(path, false, Encoding.UTF8))
{
    SaveCSV(writer);
}

मेरे पास मूल रूप से निम्नलिखित कोड था, जिसके साथ एक्सेंट नोटपैड ++ में ठीक दिखता है, लेकिन एक्सेल में मंगाई गई थी:

using (StreamWriter writer = new StreamWriter(path))
{
    SaveCSV(writer);
}

आपका लाभ भिन्न हो सकता है - मैं Office 365 से .NET 4 और Excel का उपयोग कर रहा हूं।


0

कार्यालय 365 के लिए कार्य समाधान

  • में सहेजें UTF-16(कोई ले, बीई)
  • विभाजक का उपयोग करें \t

PHP में कोड

$header = ['číslo', 'vytvořeno', 'ěščřžýáíé'];
$fileName = 'excel365.csv';
$fp = fopen($fileName, 'w');
fputcsv($fp, $header, "\t");
fclose($fp);

$handle = fopen($fileName, "r");
$contents = fread($handle, filesize($fileName));
$contents = iconv('UTF-8', 'UTF-16', $contents);
fclose($handle);

$handle = fopen($fileName, "w");
fwrite($handle, $contents);
fclose($handle);

-1

पहले एक्सेल स्प्रेडशीट को यूनिकोड टेक्स्ट के रूप में सहेजें। इंटरनेट एक्सप्लोरर का उपयोग करके TXT फाइल खोलें और "Save as" TXT एन्कोडिंग पर क्लिक करें - विन एन्डिलर 1251 के लिए उपयुक्त एन्कोडिंग चुनें।


-1

मैंने इस धागे पर और इसके समान कुछ भी पाने की कोशिश की, पूरी तरह से काम नहीं किया। हालाँकि, Google शीट पर आयात करना और बस CSV डाउनलोड करना एक आकर्षण की तरह काम करता है। यदि आप मेरी हताशा की ओर आते हैं तो इसे आज़माएँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.