ما هو التشفير الذي يفتح ملفات CSV بشكل صحيح مع Excel على كل من Mac و Windows؟


Answers

بالنسبة إلى UTF-16LE مع BOM إذا كنت تستخدم أحرف علامة التبويب كمحددات بدلاً من الفواصل ، سيتعرف Excel على الحقول. سبب عمله هو أن Excel بالفعل ينتهي باستخدام محلل Unicode * .txt الخاص به.

التحذير : إذا تم تحرير الملف في Excel وحفظه ، فسيتم حفظه بتنسيق ASCII مفصول بعلامات جدولة. المشكلة الآن هي أنه عندما تعيد فتح الملف ، يفترض Excel أنه ملف CSV حقيقي (بفواصل) ، يرى أنه ليس Unicode ، لذلك يوزعه على أنه مفصول بفواصل - ومن ثم سوف يقوم بتجزئة منه!

تحديث : يبدو أن التحذير أعلاه لا يحدث لي اليوم في Excel 2010 (Windows) على الأقل ، على الرغم من أنه يبدو أن هناك اختلاف في حفظ السلوك إذا:

  • قمت بتحرير و إنهاء Excel (يحاول حفظ باسم "Unicode * .txt")

مقارنة ب:

  • تحرير وإغلاق الملف فقط (يعمل كما هو متوقع).
Question

لدينا تطبيق ويب يقوم بتصدير ملفات CSV تحتوي على أحرف أجنبية مع UTF-8 ، وليس BOM. يحصل كل من مستخدمي Windows و Mac على أحرف garbage في Excel. حاولت التحويل إلى UTF-8 مع BOM ؛ اكسل / وين على ما يرام مع ذلك ، يظهر Excel / Mac رطانة. أستخدم Excel 2003 / Win و Excel 2011 / Mac. إليك جميع الترميزات التي جربتها:

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

أفضل واحد هو UTF-16LE مع BOM ، ولكن CSV لم يتم التعرف عليه على هذا النحو. فاصل الحقل هو فاصلة ، لكن الفاصلة المنقوطة لا تغير الأشياء.

هل هناك أي ترميز يعمل في كلا العالمين؟




لقد جربت فقط CSV مفصولة بفاصلة وفاصلة منقوطة. إذا كنت قد جربت CSV مفصولة بعلامات جدولة (تسمى أيضًا TSV) ، فستجد الإجابة:

UTF-16LE مع BOM (علامة ترتيب البايت) ، مفصولة بعلامة التبويب

ولكن : في تعليق ذكرتم أن TSV ليس خيارًا بالنسبة لك (لم أتمكن من العثور على هذا المطلب في سؤالك بالرغم من ذلك). هذا مؤسف غالبًا ما يعني ذلك أنك تسمح بالتحرير اليدوي لملفات TSV ، والتي ربما ليست فكرة جيدة. الفحص المرئي لملفات TSV ليس مشكلة. وعلاوة على ذلك ، يمكن تعيين المحررين لعرض حرف خاص لوضع علامات على علامات التبويب.

ونعم ، لقد جربت ذلك على Windows و Mac.




في نظام التشغيل Mac OS ، حدد Text Wrangler ملف CSV تم إنشاؤه باستخدام Excel على أنه يحتوي على تشفير "غربي".

بعد بعض googling لقد جعلت هذا البرنامج النصي الصغير (لست متأكدًا من توفر Windows ، ربما مع Cygwin ؟):

$ 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



تعمل UTF-8 مع عدم وجود BOM حاليًا بالنسبة لي في Excel Mac 2011 14.3.2.

UTF-8 + BOM نوع من الأعمال ، ولكن BOM المقدمة كما رطانة.

يعمل UTF-16 إذا قمت باستيراد الملف وإكمال المعالج ، ولكن ليس إذا قمت بالنقر المزدوج فوقه فقط.




حل هذا باستخدام جافا (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 كفاصل. يمكنك قراءة ملف CSV على كل من Windows و MAC OS X.

الرجوع إلى: كيف يمكنني ترميز / فك ترميز صفيف بايت UTF-16LE مع BOM؟




إليك الفاصل الزمني لاستيراد ملف CSV بتنسيق utf8 إلى Excel 2011 لنظام التشغيل Mac: تقول Microsoft: "لا يدعم Excel لنظام التشغيل Mac UTF-8 في الوقت الحالي." Excel for Mac 2011 و UTF-8

Yay، way to go MS!




بدلاً من csv ، محاولة إخراج html بامتداد XLS و نوع mime "application / excel". أعلم أن هذا سيعمل في Windows ، لكن لا يمكنني التحدث مع MacOS




Links