windows - मैक और विंडोज दोनों पर एक्सेल के साथ कौन सी एन्कोडिंग सीएसवी फाइलों को सही तरीके से खोलती है?




excel macos (10)

एक्सेल एनकोडिंग्स

एक्सेल से निपटने के दौरान मुझे WINDOWS-1252 एन्कोडिंग कम से कम निराशाजनक पाया गया। चूंकि मूल रूप से माइक्रोस्कोफ्ट्स के स्वामित्व वाले चरित्र सेट के बाद से, कोई यह मान सकता है कि यह मैक और एक्सेल के विंडोज संस्करण दोनों पर काम करेगा। दोनों संस्करणों में कम से कम एक "फ़ाइल मूल" या "फ़ाइल एन्कोडिंग" चयनकर्ता शामिल होता है जो डेटा को सही ढंग से पढ़ता है।

आपके सिस्टम और आपके द्वारा उपयोग किए जाने वाले टूल के आधार पर, इस एन्कोडिंग को अन्य विविधताओं के बीच CP1252 , ANSI , Windows (ANSI) , MS-ANSI या सिर्फ Windows नाम दिया जा सकता है।

यह एन्कोडिंग ISO-8859-1 LATIN1 ISO-8859-1 (उर्फ LATIN1 और अन्य) का एक सुपरसेट है, इसलिए यदि आप कुछ कारणों से WINDOWS-1252 उपयोग नहीं कर सकते हैं तो आप ISO-8859-1 LATIN1 9 ISO-8859-1 फॉलबैक कर सकते हैं। सलाह ISO-8859-1 कि ISO-8859-1 में WINDOWS-1252 से कुछ वर्ण गायब हैं जैसा कि यहां दिखाया गया है:

| Char | ANSI | Unicode | ANSI Hex | Unicode Hex | HTML entity | Unicode Name                               | Unicode Range            |
| €    | 128  | 8364    | 0x80     | U+20AC      | €      | euro sign                                  | Currency Symbols         |
| ‚    | 130  | 8218    | 0x82     | U+201A      | ‚     | single low-9 quotation mark                | General Punctuation      |
| ƒ    | 131  | 402     | 0x83     | U+0192      | ƒ      | Latin small letter f with hook             | Latin Extended-B         |
| „    | 132  | 8222    | 0x84     | U+201E      | „     | double low-9 quotation mark                | General Punctuation      |
| …    | 133  | 8230    | 0x85     | U+2026      | …    | horizontal ellipsis                        | General Punctuation      |
| †    | 134  | 8224    | 0x86     | U+2020      | †    | dagger                                     | General Punctuation      |
| ‡    | 135  | 8225    | 0x87     | U+2021      | ‡    | double dagger                              | General Punctuation      |
| ˆ    | 136  | 710     | 0x88     | U+02C6      | ˆ      | modifier letter circumflex accent          | Spacing Modifier Letters |
| ‰    | 137  | 8240    | 0x89     | U+2030      | ‰    | per mille sign                             | General Punctuation      |
| Š    | 138  | 352     | 0x8A     | U+0160      | Š    | Latin capital letter S with caron          | Latin Extended-A         |
| ‹    | 139  | 8249    | 0x8B     | U+2039      | ‹    | single left-pointing angle quotation mark  | General Punctuation      |
| Π   | 140  | 338     | 0x8C     | U+0152      | Π    | Latin capital ligature OE                  | Latin Extended-A         |
| Ž    | 142  | 381     | 0x8E     | U+017D      |             | Latin capital letter Z with caron          | Latin Extended-A         |
| ‘    | 145  | 8216    | 0x91     | U+2018      | ‘     | left single quotation mark                 | General Punctuation      |
| ’    | 146  | 8217    | 0x92     | U+2019      | ’     | right single quotation mark                | General Punctuation      |
| “    | 147  | 8220    | 0x93     | U+201C      | “     | left double quotation mark                 | General Punctuation      |
| ”    | 148  | 8221    | 0x94     | U+201D      | ”     | right double quotation mark                | General Punctuation      |
| •    | 149  | 8226    | 0x95     | U+2022      | •      | bullet                                     | General Punctuation      |
| –    | 150  | 8211    | 0x96     | U+2013      | –     | en dash                                    | General Punctuation      |
| —    | 151  | 8212    | 0x97     | U+2014      | —     | em dash                                    | General Punctuation      |
| ˜    | 152  | 732     | 0x98     | U+02DC      | ˜     | small tilde                                | Spacing Modifier Letters |
| ™    | 153  | 8482    | 0x99     | U+2122      | ™     | trade mark sign                            | Letterlike Symbols       |
| š    | 154  | 353     | 0x9A     | U+0161      | š    | Latin small letter s with caron            | Latin Extended-A         |
| ›    | 155  | 8250    | 0x9B     | U+203A      | ›    | single right-pointing angle quotation mark | General Punctuation      |
| œ    | 156  | 339     | 0x9C     | U+0153      | œ     | Latin small ligature oe                    | Latin Extended-A         |
| ž    | 158  | 382     | 0x9E     | U+017E      |             | Latin small letter z with caron            | Latin Extended-A         |
| Ÿ    | 159  | 376     | 0x9F     | U+0178      | Ÿ      | Latin capital letter Y with diaeresis      | Latin Extended-A         |

ध्यान दें कि यूरो चिह्न गुम है । यह टेबल एलन वुड में पाया जा सकता है।

रूपांतरण

प्रत्येक उपकरण और भाषा में रूपांतरण अलग-अलग किया जाता है। हालांकि, मान लें कि आपके पास एक फ़ाइल query_result.csv जिसे आप जानते हैं UTF-8 एन्कोडेड है। iconv का उपयोग करके इसे WINDOWS-1252 कनवर्ट करें:

iconv -f UTF-8 -t WINDOWS-1252 query_result.csv > query_result-win.csv

हमारे पास एक वेब ऐप है जो सीएसवी फाइलों को निर्यात करता है जिसमें यूटीएफ -8, नो बीओएम के साथ विदेशी पात्र होते हैं। विंडोज और मैक दोनों उपयोगकर्ताओं को एक्सेल में कचरा पात्र मिलते हैं। मैंने बीओएम के साथ यूटीएफ -8 में परिवर्तित करने की कोशिश की; एक्सेल / विन इसके साथ ठीक है, एक्सेल / मैक अस्पष्ट दिखाता है। मैं एक्सेल 2003 / विन, एक्सेल 2011 / मैक का उपयोग कर रहा हूं। मैंने कोशिश की सभी एन्कोडिंग यहां दी गई है:

Encoding  BOM      Win                            Mac
--------  ---      ----------------------------   ------------
utf-8     --       scrambled                      scrambled
utf-8     BOM      WORKS                          scrambled
utf-16    --       file not recognized            file not recognized
utf-16    BOM      file not recognized            Chinese gibberish
utf-16LE  --       file not recognized            file not recognized
utf-16LE  BOM      characters OK,                 same as Win
                   row data all in first field

बीओएम के साथ सबसे अच्छा यूटीएफ -16LE है, लेकिन सीएसवी इस तरह से पहचाना नहीं गया है। क्षेत्र विभाजक अल्पविराम है, लेकिन अर्धविराम चीजों को नहीं बदलता है।

क्या कोई एन्कोडिंग है जो दोनों दुनिया में काम करती है?


आपने केवल अल्पविराम से अलग और अर्धविराम से अलग सीएसवी की कोशिश की है। यदि आपने टैब से अलग सीएसवी (जिसे टीएसवी भी कहा जाता है) की कोशिश की थी तो आपको जवाब मिल गया होगा:

बीओएम (बाइट ऑर्डर मार्क) के साथ यूटीएफ -16LE , टैब से अलग

लेकिन : एक टिप्पणी में आप उल्लेख करते हैं कि टीएसवी आपके लिए एक विकल्प नहीं है (हालांकि मैं इस प्रश्न को आपके प्रश्न में नहीं ढूंढ पाया है)। वह अफसोस की बात है। इसका अक्सर अर्थ है कि आप टीएसवी फाइलों के मैन्युअल संपादन की अनुमति देते हैं, जो शायद एक अच्छा विचार नहीं है। टीएसवी फाइलों की दृश्य जांच एक समस्या नहीं है। इसके अलावा संपादकों को टैब चिह्नित करने के लिए एक विशेष चरित्र प्रदर्शित करने के लिए सेट किया जा सकता है।

और हाँ, मैंने विंडोज और मैक पर यह कोशिश की।


कम डाउनडाउन है: कोई समाधान नहीं है। एक्सेल 2011 / मैक एक सीएसवी फ़ाइल को सही ढंग से समझ नहीं सकता है जिसमें उमलॉट्स और डायक्रिटिकल अंक हैं, इससे कोई फर्क नहीं पड़ता कि आप क्या एन्कोडिंग या हॉप कूदते हैं। मुझे किसी को अलग बताने में खुशी होगी!


जावा का उपयोग करके इसे हल करें (बीओएम के साथ यूटीएफ -16LE):

String csvReportStr = getCsvReport();
byte[] data = Charset.forName("UTF-16LE").encode(csvReportStr)
    .put(0, (byte) 0xFF)
    .put(1, (byte) 0xFE)
    .array();

ध्यान दें कि सीएसवी फ़ाइल को TAB को विभाजक के रूप में उपयोग करना चाहिए। आप विंडोज़ और मैक ओएस एक्स दोनों पर सीएसवी फ़ाइल पढ़ सकते हैं।

इसका संदर्भ लें: मैं बीओएम के साथ यूटीएफ -16LE बाइट एरे को एन्कोड / डीकोड कैसे करूं?


मेरे मामले में यह काम करता है (मैक, एक्सेल 2011, चेक डायक्रिटिक्स के साथ सिरिलिक और लैटिन वर्ण दोनों):

  • वर्णसेट यूटीएफ -16LE (बस यूटीएफ -16 पर्याप्त नहीं था)
  • बीओएम "\ xFF \ xFE"
  • \ t (टैब) विभाजक के रूप में
  • विभाजक और सीआरएलएफ को भी एन्कोड करना न भूलें :-)
  • Mb_convert_encoding के बजाय iconv का उपयोग करें

मेरे मामले में समस्या को हल करने के लिए प्रस्तावना जोड़ना मेरी समस्या हल:

var data = Encoding.UTF8.GetBytes(csv);
var result = Encoding.UTF8.GetPreamble().Concat(data).ToArray();
return File(new MemoryStream(result), "application/octet-stream", "data.csv");

मैक 2011 और विंडोज एक्सेल 2002 के लिए Excel पर मेरे लिए निम्नलिखित काम किया:

  1. मैक पर iconv का उपयोग करके, फ़ाइल को यूटीएफ -16 लिटिल-एंडियन + नाम में बदलें * .txt (.txt एक्सटेंशन टेक्स्ट आयात विज़ार्ड चलाने के लिए Excel को मजबूर करता है):

    iconv -f UTF-8 -t UTF-16LE filename.csv >filename_UTF-16LE.csv.txt

  2. एक्सेल में फ़ाइल खोलें और टेक्स्ट आयात विज़ार्ड में चुनें:

    • चरण 1: फ़ाइल उत्पत्ति : इसे अनदेखा करें, इससे कोई फर्क नहीं पड़ता कि आप क्या चुनते हैं
    • चरण 2: Delimiters और पाठ योग्यता के लिए उचित मूल्य का चयन करें
    • चरण 3: यदि आवश्यक हो, तो कॉलम प्रारूप का चयन करें

पीएस यूटीएफ द्वारा निर्मित यूटीएफ -16LE में शुरुआत में बीओएम बाइट्स एफएफ एफई है।

पीपीएस मेरी मूल सीएसवी फ़ाइल विंडोज 7 कंप्यूटर पर, यूटीएफ -8 प्रारूप में (शुरुआत में बीओएम बाइट्स ईएफ बीबी बीएफ के साथ) बनाई गई थी और सीआरएलएफ लाइन ब्रेक का इस्तेमाल किया गया था। कोमा का उपयोग फील्ड डिलीमीटर और टेक्स्ट क्वालीफायर के रूप में एकल उद्धरण के रूप में किया गया था। इसमें एएससीआईआई अक्षरों और टिल्ड, उमलॉट इत्यादि के साथ-साथ कुछ सिरिलिक के साथ विभिन्न लैटिन अक्षरों को शामिल किया गया था। सभी Win और Mac के लिए Excel दोनों में ठीक से प्रदर्शित होते हैं।

पीपीपीएस सटीक सॉफ्टवेयर संस्करण:
* मैक ओएस एक्स 10.6.8
* मैक 2011 v.14.1.3 के लिए एक्सेल
* विंडोज सर्वर 2003 एसपी 2
* विंडोज एक्सेल 2002 v.10.2701.2625


मैक के लिए Excel 2011 में utf8-encoded CSV आयात करने पर क्लीनर यहां दिया गया है: माइक्रोसॉफ्ट का कहना है: "मैक के लिए एक्सेल वर्तमान में यूटीएफ -8 का समर्थन नहीं करता है।" मैक 2011 और यूटीएफ -8 के लिए एक्सेल

हाँ, एमएस जाने का रास्ता!


यह मेरे लिए काम करता है

  1. फ़ाइल को BBEdit या TextWrangler * में खोलें।
  2. फ़ाइल को यूनिकोड (यूटीएफ -16 लिटिल-एंडियन) के रूप में सेट करें (लाइन एंडिंग यूनिक्स या विंडोज हो सकता है)। बचाना!
  3. एक्सेल में: डेटा> बाहरी डेटा प्राप्त करें> टेक्स्ट फ़ाइल आयात करें ...

अब मुख्य बिंदु, फ़ाइल उत्पत्ति के रूप में MacIntosh चुनें (यह पहली पसंद होना चाहिए)।

यह एक्सेल 2011 का उपयोग कर रहा है (संस्करण 14.4.2)

* खिड़की के नीचे एक छोटी बूंद है


यूटीएफ -8 के साथ कोई बीओएम वर्तमान में एक्सेल मैक 2011 14.3.2 में मेरे लिए काम नहीं करता है।

यूटीएफ -8 + बीओएम प्रकार के काम, लेकिन बीओएम गिबर के रूप में प्रस्तुत किया।

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





utf