Menyimpan file dalam tipe CSV di Excel selalu menghapus BOM

15

Saya sudah mencoba mencari solusi / penjelasan yang masuk akal (tidak berhasil) untuk mencari tahu mengapa Excel default menghapus BOM saat menyimpan file ke tipe CSV.

Tolong maafkan saya jika Anda menganggap ini duplikat dari pertanyaan ini . Ini menangani pembacaan file CSV dengan penyandian non-ASCII, tetapi tidak mencakup menyimpan kembali file (yang merupakan masalah terbesar).

Inilah situasi saya saat ini (yang akan saya kumpulkan adalah umum di antara perangkat lunak lokal yang berurusan dengan karakter Unicode dan format CSV):

  • Kami mengekspor data ke format CSV menggunakan UTF-16LE, memastikan BOM diatur (0xFFFE). Kami memvalidasi setelah file dibuat dengan Hex editor untuk memastikan itu diatur dengan benar.

  • Buka file dalam Excel (untuk contoh ini kami mengekspor karakter Jepang) dan saksikan bahwa Excel menangani memuat file dengan penyandian yang benar.

  • Upaya untuk menyimpan file ini akan meminta Anda dengan pesan peringatan yang menunjukkan bahwa file tersebut mungkin berisi fitur yang mungkin tidak kompatibel dengan pengkodean Unicode, tetapi menanyakan apakah Anda tetap ingin menyimpannya.

  • Jika Anda memilih dialog Simpan Sebagai, ia akan segera meminta Anda untuk menyimpan file sebagai "Teks Unicode" daripada CSV. Jika Anda memilih ekstensi "CSV" dan menyimpan file itu menghapus BOM (jelas bersama dengan semua karakter Jepang).

Mengapa ini terjadi? Apakah ada solusi untuk masalah ini, atau ini dikenal sebagai 'bug' / pembatasan Excel?

Selain itu (sebagai masalah tambahan), tampaknya Excel, saat memuat file CSV yang disandikan UTF-16LE, hanya menggunakan pembatas TAB. Sekali lagi, apakah ini dikenal sebagai 'bug' / batasan Excel?

rickp
sumber

Jawaban:

6

Tidak ada jawaban sopan untuk pertanyaan dalam bentuk "Mengapa Excel melakukan X?".

Mengapa Anda tidak mengadopsi "Simpan sebagai Teks Unicode" sebagai format transfer standar Anda? Excel Save as memastikan ada BOM, menggunakan TAB sebagai pembatas, mengutip kolom seperti CSV ...

Omong-omong, Anda tidak "memilih ekstensi CSV". Anda memiliki DUA pilihan - format dan ekstensi. Coba simpan sebagai teks unicode di kotak 'Simpan sebagai tipe' dan ubah ekstensi secara manual di kotak 'Nama file' menjadi csv. Kemudian keluar dari Excel dan klik dua kali pada nama file di Windows Explorer. Terbuka dengan baik. Cobalah.

Pembaruan untuk membahas komentar OP :

  • "Simpan sebagai Teks Unicode" (dalam Excel 2007) akan selalu menyimpan file Anda sebagai ekstensi Teks (Saya tidak dapat berbicara untuk versi sebelumnya atau yang lebih baru). Itulah gagasan "Simpan sebagai tipe" ...

=> Harap baca dengan seksama apa yang saya tulis di atas dan coba sendiri. Itu akan selalu menyimpan file Anda dengan ekstensi TXT kecuali Anda menimpanya : hapus txtkotak dan ketik 'Nama file' csv.

  • Untuk mengklarifikasi "Excel Save as Anda memastikan ada BOM", tidak benar.

=> "Simpan sebagai teks Unicode " memastikan bahwa ada BOM UTF-16LE di bagian depan file. Cobalah dan lihatlah.

  • Inilah alasan saya mengajukan pertanyaan sejak awal! Jika saya membuka file berformat CSV yang berisi BOM untuk menunjukkan file saya Encoding adalah UFT-16LE dan memodifikasi file ini melalui Excel, saya berharap ketika saya menyimpan file ini bahwa Encoding tetap dalam kebijaksanaan ...

=> dan harapan Anda tidak terpenuhi, karena Excel tidak menyimpan info apa pun tentang file CSV input. Tidak ada cara untuk memaksanya melakukan apa yang ingin Anda lakukan. Jadi Anda menyerah atau mencoba sesuatu yang lain, seperti apa yang saya sarankan.

  • Apa yang akan sangat menyenangkan adalah seseorang yang pernah mengalami masalah ini sebelumnya, tolong berikan wawasan Anda.

=> Saya telah mengalami masalah ini, dengan data China dan Excel 1997, tahun lalu. Saya telah, sebelum menjawab pertanyaan Anda, diverifikasi dengan Excel 2003 dan Excel 2007 bahwa Excel masih berperilaku buruk. Saya telah memverifikasi bahwa solusi "save as type = Unicode, extension = CSV" memang berfungsi. Saya telah memberikan wawasan saya.

John Machin
sumber
1
"Simpan sebagai Teks Unicode" (dalam Excel 2007) akan selalu menyimpan file Anda sebagai ekstensi Teks (Saya tidak dapat berbicara untuk versi sebelumnya atau yang lebih baru). Itulah gagasan "Simpan sebagai tipe" ... Untuk mengklarifikasi "Excel Save as Anda memastikan ada BOM", tidak benar. Inilah alasan saya mengajukan pertanyaan sejak awal! Jika saya membuka file berformat CSV yang berisi BOM untuk menunjukkan file saya Encoding adalah UFT-16LE dan memodifikasi file ini melalui Excel, saya berharap ketika saya menyimpan file ini bahwa Encoding tetap dalam kebijaksanaan ... Apa yang akan sangat baik adalah seseorang siapa yang mengalami masalah ini sebelumnya, tolong berikan wawasan Anda.