Microsoft Excel mangles Diacritics في ملفات .csv؟



Answers

عملت عملية إعداد BOM (\ uFEFF) لي (Excel 2007) ، في أن Excel تعرف على الملف باسم UTF-8. وإلا ، فإن حفظه واستخدام معالج الاستيراد يعمل ، ولكنه أقل مثالية.

Question

أنا تصدير البيانات برمجيا (باستخدام PHP 5.2) في ملف اختبار .csv.
بيانات المثال: Numéro 1 (لاحظ علامة e). البيانات هي utf-8 (لا BOM prepended).

عندما أفتح هذا الملف في MS Excel ، يتم Numéro 1 كـ Numéro 1 .

أنا قادر على فتح هذا في محرر نصوص (UltraEdit) الذي يعرض بشكل صحيح. تشير UE إلى أن الحرف decimal 233 .

كيف يمكنني تصدير بيانات النص في ملف .csv بحيث يقوم MS Excel بجعله بشكل صحيح ، ويفضل بدون فرض استخدام معالج الاستيراد ، أو إعدادات المعالج غير الافتراضية؟




حدد UTF-8 enconding عند الاستيراد. إذا كنت تستخدم Office 2007 فهذا هو المكان الذي اخترته: مباشرة بعد فتح الملف.

http://s4.tinypic.com/mv1bhi.jpg




صدى UTF-8 BOM قبل إخراج بيانات CSV. يعمل هذا على إصلاح جميع مشكلات الأحرف في Windows ولكنه لا يعمل مع نظام التشغيل Mac.

echo "\xEF\xBB\xBF";

إنه يعمل لي لأنني بحاجة لإنشاء ملف سيتم استخدامه على أجهزة كمبيوتر Windows فقط.




فتح ملف CSV مع المفكرة ++ clic على Encode ، حدد تحويل إلى UTF-8 (لا تحويل إلى UTF-8 (بدون BOM)) حفظ مفتوحة بالكليك المزدوج مع اكسل نأمل أن يساعد كريستوف غريسون




يمكنك حفظ ملف html بالملحق 'xls' وستعمل اللكنات (قبل 2007 على الأقل).

مثال: احفظ هذا (باستخدام Save As utf8 في Notepad) كـ test.xls:

<html>
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
<table>
<tr>
  <th>id</th>
  <th>name</th>
</tr>
<tr>
 <td>4</td>
 <td>Hélène</td>
</tr>
</table>
</html>



يتم تنفيذ تنسيق CSV كـ ASCII ، وليس unicode ، في Excel ، وبالتالي تتداخل علامات التشكيل. لقد واجهنا نفس المشكلة وهي الطريقة التي اتبعتها في تتبع أن معيار CSV الرسمي قد تم تعريفه على أنه يستند إلى ASCII في Excel.




لاحظ أن تضمين UTF-8 BOM ليس بالضرورة فكرة جيدة - إصدارات Mac من Excel تتجاهلها وستعرض بالفعل BOM as ASCII ... ثلاثة أحرف سيئة في بداية الحقل الأول في جدول البيانات ...




كما قال Fregal \ uFEFF هو الطريق للذهاب.

<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<%
Response.Clear();
Response.ContentType = "text/csv";
Response.Charset = "utf-8";
Response.AddHeader("Content-Disposition", "attachment; filename=excelTest.csv");
Response.Write("\uFEFF");
// csv text here
%>



كتابة BOM إلى ملف CSV الخاص بالمخرجات قد نجح في عملي في Django:

def handlePersoonListExport(request):
    # Retrieve a query_set
    ...

    template = loader.get_template("export.csv")
    context = Context({
        'data': query_set,
    })

    response = HttpResponse()
    response['Content-Disposition'] = 'attachment; filename=export.csv'
    response['Content-Type'] = 'text/csv; charset=utf-8'
    response.write("\xEF\xBB\xBF")
    response.write(template.render(context))

    return response

لمزيد من المعلومات http://crashcoursing.blogspot.com/2011/05/exporting-csv-with-special-characters.html شكرا يا شباب!




لا يمكنني الحصول إلا على CSV لتحليل بشكل صحيح في Excel 2007 كأداة UTF-16 ذات نهاية افتراضية صغيرة مفصولة بعلامة التبويب المناسبة.




لقد وجدت طريقة لحل المشكلة. هذا هو اختراق سيئ لكنه يعمل: افتح المستند مع Open Office ، ثم احفظه في أي تنسيق Excel. سوف يعرض .xls أو .xlsx الناتج الأحرف المميزة.




Links