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


137

हमारे पास एक वेब ऐप है जो CSV फ़ाइलों को निर्यात करता है जिसमें विदेशी अक्षर UTF-8, कोई BOM नहीं हैं। विंडोज और मैक दोनों उपयोगकर्ताओं को एक्सेल में कचरा पात्र मिलते हैं। मैंने बीओएम के साथ यूटीएफ -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

BOM के साथ UTF-16LE सबसे अच्छा है, लेकिन CSV को इस तरह से मान्यता नहीं दी जाती है। क्षेत्र विभाजक अल्पविराम है, लेकिन अर्धविराम चीजों को नहीं बदलता है।

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


1
क्या होगा यदि आप सभी फ़ील्ड डेटा के लिए UTF-16LE का उपयोग करते हैं लेकिन अल्पविराम के लिए 8bit / ASCII वर्ण का उपयोग करते हैं? इस लेख ( creativyst.com/Doc/Articles/CSV/CSV01.htm#CSVAndEncodings ) के आधार पर , एक्सेल विभाजक के बजाय फ़ील्ड डेटा के भाग के रूप में यूनिकोड अल्पविराम की व्याख्या कर सकता है।
jveazey

1
दिलचस्प टिप @jveazey मैं यह कोशिश करूँगा: mb_convert_encoding($str, "UTF-16LE");मेरे निर्यात कोड में और परिणाम यहाँ पोस्ट करें।
टिम्म

ऐसा नहीं है कि यह आपकी मदद करता है, लेकिन मैंने विंडोज पर एक्सेल 2007 SP2 का परीक्षण किया (परीक्षण फ़ाइलों को बनाने के लिए नोटपैड 2 का उपयोग करके)। UTF-16LE BOM (Windows पर आपका समान परिणाम) और UTF-16BE BOM को छोड़कर सब कुछ काम किया (जिसमें खेतों को सही ढंग से पार्स किया गया था लेकिन BOM को A1 में पहले 2 वर्णों के रूप में शामिल किया गया था)।
jveazey

इसके अलावा, यह stackoverflow.com/questions/155097/…
jveazey

@hveazey, उद्धृत प्रश्न का उत्तर कोड्री विंडोज -1252 की सिफारिश की गई है। यह मेरे मामले के लिए काम नहीं किया (जर्मन umlauts और तेज एस)।
टिम्म

जवाबों:


61

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

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

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

यह एन्कोडिंग ISO-8859-1(उर्फ LATIN1और अन्य) का एक सुपरसेट है , इसलिए ISO-8859-1यदि आप WINDOWS-1252किसी कारण से उपयोग नहीं कर सकते हैं , तो आप वापस आ सकते हैं । सलाह दी जाती है कि यहाँ 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एन्कोडेड है। इसे WINDOWS-1252उपयोग में बदलें iconv:

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

6
थोड़ा सा फफूंद, लेकिन यह आयात करने के लिए जवाब लगता है। मैक ओएसएक्स पर एक्सेल में यूरोपीय पात्रों के साथ .vv फाइलें
फर्जी

1
सच। यह इसके बजाय ओपी के सवाल का जवाब देता है। आपके मामले में आपको सबसे पहले अपने ".csv फ़ाइल को यूरोपीय वर्णों के साथ" में प्रयुक्त एन्कोडिंग (या अनुमान) को जानना होगा। तब आप इसे रूपांतरित कर सकते हैं WINDOS-1252, जो संभवतः मैक और विंडोज एक्सेल दोनों द्वारा सही ढंग से व्याख्या की जाएगी।
माइकजेटर

1
यह कोई वास्तविक समाधान नहीं है, जितनी जल्दी या बाद में आप एक ऐसे चरित्र में आएंगे जो विन्डोज़ -1252 के लिए परिवर्तनीय नहीं है।
वाल्टर ट्रॉस

2
चीनी वर्ण होने पर WINDOWS-1252 विफल हो जाएगा। इसलिए ऐसा लगता है कि BOM के साथ UTF-16LE एकमात्र विकल्प है।
XWang

यह diacritics के साथ SQL डेटा निर्यात के लिए अच्छी तरह से काम करता है।
मोटरबाइक

26

यदि आप कॉल्स के बजाय टैब वर्णों का उपयोग करते हैं तो UTF-16LE BOM के साथ, Excel फ़ील्ड की पहचान करेगा। इसका कारण यह है कि एक्सेल वास्तव में अपने यूनिकोड * .txt पार्सर का उपयोग करके समाप्त होता है।

कैविएट : यदि फ़ाइल को एक्सेल में संपादित किया जाता है और बचाया जाता है, तो इसे टैब-सीमांकित ASCII के रूप में सहेजा जाएगा। अब समस्या यह है कि जब आप फ़ाइल को फिर से खोलते हैं तो एक्सेल मान लेता है कि यह वास्तविक CSV है (अल्पविराम के साथ), यह देखता है कि यह यूनिकोड नहीं है, इसलिए इसे अल्पविराम के रूप में पार्स करता है - और इसलिए इसका एक हैश बनाया जाएगा!

अद्यतन : उपरोक्त चेतावनी आज मेरे लिए एक्सेल 2010 (विंडोज) में कम से कम दिखाई नहीं दे रही है, हालाँकि व्यवहार को बचाने में अंतर प्रतीत होता है अगर:

  • आप Excel को संपादित करते हैं और छोड़ देते हैं ('यूनिकोड * .txt' के रूप में सहेजने की कोशिश करता है)

की तुलना में:

  • संपादन और बस फ़ाइल को बंद करना (अपेक्षा के अनुसार काम करता है)।

1
अच्छा लगा, लेकिन कैवेट मेरे लिए समाधान तोड़ देता है; अंतिम उपयोगकर्ता टूटी हुई एक्सेल शीट से खुश नहीं होंगे।
टिम्म

संभवतः यदि आप प्रारंभिक फ़ाइल एक्सटेंशन को * .txt में बदलते हैं, तो यह काम करेगा, लेकिन फिर आप फ़ाइलपेट और एक्सेल के बीच संबंध खो देते हैं: अर्थात वे फ़ाइल को डबल-क्लिक नहीं कर सकते हैं और इसे एक्सेल में स्वचालित रूप से खोल सकते हैं।
डंकन स्मार्ट

यह मेरे लिए काम नहीं करेगा। कंप्यूटर-प्रेमी नहीं होने के कारण, अंतिम उपयोगकर्ता को बिना किसी बाधा के इसे एक्सेल में खोलने की आवश्यकता है।
टिम्म

मेरे पास मेरे ".csv" एक्सेल शीट हैं जो विशेष पात्रों और अलग-अलग क्षेत्रों के साथ अच्छी दिखती हैं। मैं बाइट ऑर्डर मार्क (BOM) के रूप में "\ ufeff" के साथ अपना आउटपुट स्ट्रिंग शुरू करता हूं, फिर फील्ड सेपरेशन के लिए कॉमा की जगह "\ t" टैब का उपयोग करता हूं, और फाइल को "utf-16LE" के साथ एन्कोडिंग करता हूं। एक आकर्षण की तरह काम करता है, इस पृष्ठ के लिए धन्यवाद!
गीक स्टॉक

पहली पंक्ति sep=,और UTF16LE एन्कोडिंग ने मेरे लिए काम किया और इसके लिए एक अलग विभाजक चरित्र की आवश्यकता नहीं थी (यह अल्पविराम बना रहा)। फ़ाइल को डबल-क्लिक करके फ़ाइल को सही तरीके से लोड करना, विशेष वर्णों के साथ और कक्षों के भीतर लाइन टूटना बरकरार है। डाउनसाइड: sep=,हेडर को एक्सेल को छोड़कर किसी भी प्रोग्राम द्वारा मान्यता प्राप्त नहीं है जहाँ तक मैंने देखा है। लेकिन OpenOffice / LibreOffice को वैसे भी इस हैक की आवश्यकता नहीं है (सेल सामग्री में लाइन-ब्रेक ठीक काम करते हैं, जबकि टेक्स्ट फ़ाइल से लोड करना / एक्सेल में कॉलम सहायक में पाठ का उपयोग करना कोशिकाओं में लाइन ब्रेक को ठीक से संभालना नहीं है)।
कोडमैनएक्स

24

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


4
मुझे काम करने के लिए WIN-1252 या ISO-8859-1 एन्कोडिंग मिला। कृपया मेरा उत्तर देखें।
mikezter

3
समाधान UTF-16LE का उपयोग करना है और यह सुनिश्चित करना है कि आपका उपयोग कॉमा के बजाय कॉलम को अलग करने के लिए है।
टिम ग्रैनेवेल्ड

क्या आपने वास्तव में विन और मैक टिम पर यह कोशिश की थी? जैसा कि मैंने उल्लेख किया है, TSV मेरे मामले में एक विकल्प नहीं है।
टिम्म

1
मेरे लिए, निर्यात ठीक काम करता है अगर मैं मैक और एक्सेल के विंडोज संस्करणों पर विन -1252 एन्कोडिंग का उपयोग करता हूं। @Timm, आपको स्वीकृत उत्तर को बदलने पर विचार करना चाहिए।
पियरे अरनौद

2
उन लोगों के लिए जो यह काम कर रहे हैं, क्या आपने वास्तव में अपने डेटासेट में चीनी (जैसे चीनी) वर्णों को बढ़ाया है? जीत -1252 एन्कोडिंग उन पर टूटती है क्योंकि वे सीमा से बाहर हैं।
बिल लीपर

11

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

UTF-16LE साथ बीओएम (बाइट क्रम चिह्न), टैब से अलग


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

और हां, मैंने इसे विंडोज और मैक पर आजमाया।


4

यहाँ Mac के लिए Excel 2011 में utf8- एनकोडेड CSV आयात करने वाला क्लिनिक है: Microsoft कहता है: "Mac के लिए Excel वर्तमान में UTF-8 का समर्थन नहीं करता है।" मैक 2011 और UTF-8 के लिए एक्सेल

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


4

मैक पर UTF-8 के साथ CSV फ़ाइलों को पढ़ने के लिए सबसे अच्छा समाधान उन्हें XLSX प्रारूप में परिवर्तित करना है। मुझे कोनराड फ़ॉर्स्टनर द्वारा बनाई गई एक स्क्रिप्ट मिली है, जिसे मैंने विभिन्न सीमांत पात्रों के लिए समर्थन जोड़कर थोड़ा सुधार किया है।

Github https://github.com/brablc/clit/blob/master/csv2xlsb.py से स्क्रिप्ट डाउनलोड करें । इसे चलाने के लिए आपको एक्सेल फ़ाइल हेरफेर के लिए एक अजगर मॉड्यूल ओपनपीएक्सएल स्थापित करना होगा sudo easy_install openpyxl:।


3

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

  • चारसेट UTF-16LE (बस UTF-16 पर्याप्त नहीं था)
  • BOM "\ xFF \ xFE"
  • विभाजक के रूप में \ t (टैब)
  • भी विभाजक और CRLFs सांकेतिक शब्दों में बदलना करने के लिए मत भूलना :-)
  • Mb_convert_encoding के बजाय iconv का उपयोग करें

2

यह मेरे मामले में लगता है कि मैक ओएस के लिए एक्सेल 2011 एनकोडिंग का उपयोग नहीं कर रहा है। जेनेटकोडिंग ("10000") जैसा कि मैंने सोचा था और 2 दिनों के साथ बर्बाद कर दिया था, लेकिन माइक्रोसॉफ्ट ओएस के समान ही आईएसओ। इसके लिए सबसे अच्छा सबूत एक्सेल 2011 में मैक के लिए विशेष वर्णों के साथ एक फ़ाइल बनाने के लिए है, इसे सीएसवी के रूप में सहेजें और फिर इसे मैक टेक्स्ट एडिटर में खोलें और चार्ट को स्क्रैम्बल किया जाता है।

मेरे लिए इस दृष्टिकोण ने काम किया - जिसका अर्थ है कि मैक ओएस पर एक्सेल 2011 पर सीएसवी निर्यात में विशेष पश्चिमी यूरोपीय चार्ट हैं:

Encoding isoMacOS = Encoding.GetEncoding("iso-8859-1");
Encoding defaultEncoding = Encoding.Default; 

// Convert the string into a byte array.
byte[] defaultEncodingBytes = defaultEncoding.GetBytes(exportText);

// Perform the conversion from one encoding to the other.
byte[] ansiBytes = Encoding.Convert(defaultEncoding, isoMacOS, defaultEncodingBytes);

decodedString = isoMacOS.GetString(ansiBytes);

आप @ user525081 किस भाषा का उपयोग कर रहे हैं? क्या आप इसे PHP में अनुवाद कर सकते हैं?
टिम्म

@Timm जो जावा सैंपल जैसा दिखता है लेकिन PHP में आप कन्वर्सेशन करने के लिए iconv का इस्तेमाल कर सकते हैं - de3.php.net/manual/en/function.iconv.php
आशीष दत्ता

ठीक है @ user525081, अन्य उत्तरों के समान व्यवहार करें। यह मैक उपयोगकर्ताओं को पूरा करता है, जो विंडोज लोगों को आगोश में छोड़ देता है; और यह मूल प्रश्न का उत्तर नहीं देता है - एक एन्कोडिंग जो दोनों प्लेटफार्मों पर काम करती है। धन्यवाद।
टिम्म

2

बिना BOM वाला UTF-8 वर्तमान में मेरे लिए Excel Mac 2011 14.3.2 में काम करता है।

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

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


2

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

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

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

  2. Excel में फ़ाइल खोलें और पाठ आयात विज़ार्ड चुनें:

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

PS आइकनव द्वारा निर्मित UTF-16LE में शुरुआत में BOM बाइट्स FF FE है।

PPS मेरा मूल csv फ़ाइल एक 7 विंडोज कंप्यूटर पर, UTF-8 प्रारूप में (शुरुआत में BOM बाइट्स EF BB BF के साथ) बनाया गया था और CRLF लाइन ब्रेक का उपयोग किया गया था। कॉमा का उपयोग क्षेत्र परिसीमाक के रूप में और एकल उद्धरण का पाठ गुणक के रूप में किया गया था। इसमें ASCII पत्र और अलग-अलग लैटिन अक्षरों के साथ tildes, umlaut आदि, और कुछ सिरिलिक शामिल थे। सभी विन और मैक के लिए एक्सेल दोनों में ठीक से प्रदर्शित होते हैं।

PPPS सटीक सॉफ़्टवेयर संस्करण:
* Mac OS X 10.6.8
* Excel के लिए Mac 2011 v.14.1.3
* Windows Server 2003 SP2
* Windows Excel 2002 v.10.2701.2625


अगर आपके पास बिना BOM के UTF-8 फाइल है, तो iconv इसे बिना UTM-16LE के BOM में बदल देगा (और दुर्भाग्यवश iconv को एक जोड़ने का कोई तरीका नहीं है)
Walter Tross

2

मेरे मैक ओएस पर, टेक्स्ट रैंगलर ने एक्सेल के साथ बनाई गई सीएसवी फ़ाइल को "पश्चिमी" एन्कोडिंग के रूप में पहचाना।

कुछ गोलगप्पे के बाद मैंने यह छोटी स्क्रिप्ट बनाई है (मैं विंडोज उपलब्धता के बारे में निश्चित नहीं हूं, शायद सिग्विन के साथ ?)

$ cat /usr/local/bin/utf8.sh

#!/bin/bash

INPUTFILE="$1"

iconv -f macroman -c -t UTF-8 $INPUTFILE |tr '\r' '\n' >/tmp/file.$$.csv

mv $INPUTFILE ms_trash
mv /tmp/file.$$.csv $INPUTFILE

यह केवल एक चीज है जो मेरे लिए OS X 10.14.2 (और एक्सेल 2011) पर काम करती है
डोनाल्ड

1

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

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

0

सीएसवी के बजाय, एक्सएलएस विस्तार और "एप्लिकेशन / एक्सेल" माइम-प्रकार के साथ एचटीएमएल आउटपुट की कोशिश कर रहा है। मुझे पता है कि यह विंडोज में काम करेगा, लेकिन मैकओएस के लिए नहीं बोल सकता


धन्यवाद @ royce23, लेकिन मैं सिर्फ डाउनलोड के लिए CSV फ़ाइल दे रहा हूं। मैं इसे HTTP के माध्यम से प्रस्तुत नहीं कर सकता क्योंकि मार्कअप का सरासर आकार क्रॉल की प्रतिक्रिया को धीमा कर देता है - निर्यात की गई तालिका में लाखों पंक्तियाँ हो सकती हैं ...
Timm

css से आपका html केवल csv से बड़ा एक छोटा सा अंश होगा, उदाहरण के लिए: <r> <c> id </ c> <c> नाम </ c> <c> फ़ोन </ c> </ r>
royce3

यदि मुझे समझ में नहीं आता है, तो यकीन है, लेकिन मैं सर्वर पर CSV को सहेज रहा हूं और डाउनलोड लिंक की पेशकश कर रहा हूं। HTML प्रतिक्रिया उत्पन्न करने से बहुत अधिक PHP मेमोरी
बनती है

यह काम करेगा (UTF-8 वर्ण) लेकिन यदि आपके पास कक्षों ( brटैग) के भीतर एम्बेडेड लाइन विराम है , तो मैक के लिए एक्सेल (विंडोज के साथ काम करता है) सीएसएस mso-data-placement:same-cell;
फसल काटने वाली

0

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

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

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

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

* विंडो के निचले भाग में थोड़ा ड्रॉपडाउन है


0

जावा (UTF-16LE BOM के साथ) का उपयोग करके इसे हल करें:

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

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

देखें: मैं कैसे BOM के साथ UTF-16LE बाइट सरणियों को कूटबद्ध / डिकोड कर सकता हूँ?

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