UTF-8 tanpa BOM

180

Saya memiliki file javascript yang saya perlukan untuk disimpan di UTF-8 (tanpa BOM), setiap kali saya mengonversinya ke format yang benar di Notepad ++ , file tersebut dikembalikan ke UTF-8 dengan BOM ketika saya membukanya di Visual Studio. Bagaimana saya bisa menghentikan VS2010 dari melakukan itu?

Pertanyaan lain, apakah UTF-8 tanpa tanda tangan di Visual Studio sama dengan UTF-8 tanpa BOM?

kabaros
sumber
13
file yang disimpan dengan (utf-8 tanpa BOM) dikembalikan ke (utf-8 dengan BOM) .. ini masalahnya
kabar
Solusi untuk masalah kabaros sederhana - cukup simpan file dengan studio visual menggunakan uft-8 tanpa BOM. Ya, itu mungkin - seperti yang diperhatikan Keavon "UTF-8 Tanpa Tanda Tangan ada di bagian paling bawah daftar." Cukup aneh bahwa utf-8 dengan signature ada di awal dan utf-8 hampir ada di akhir, tapi setidaknya itu menyelesaikan masalah yang membuat frustrasi ini.
cyriel

Jawaban:

227

BOM atau Byte Order Mark terkadang cukup mengganggu. Visual Studio tidak mengubah file kecuali Anda menyimpannya (seperti yang dikatakan Hans).

Dan di sini adalah solusi untuk masalah Anda: Jika Anda ingin menyimpan file dengan pengkodean lain pilih save as dan perpanjang tombol simpan dalam dialog file dan pilih "Save with encoding". Atau jika Anda ingin menyingkirkan pengaturan ini secara permanen cukup buka menu File dan pilih "Opsi penyimpanan lanjutan" dan di sana Anda harus memilih "UTF-8 tanpa tanda tangan" (dan itu juga menjawab pertanyaan terakhir Anda :). Ya "UTF-8 tanpa tanda tangan" sama dengan tanpa BOM.

Dave81
sumber
11
Saya bertanya-tanya apakah ada opsi untuk mengaktifkan ini secara default untuk semua file.
mihai
3
Itu menyimpan file dengan benar ketika saya memilih "Simpan dengan penyandian", tetapi saya tidak melihat "Opsi penyimpanan lanjutan" di menu File saya, tidak peduli apa pun jenis file yang saya buka di editor. Hm ....
Chris Jaynes
20
@ChrisJaynes klik kanan bilah menu, di tempat terbuka, lalu klik sesuaikan ... perintah ... (*) menubar: File ... [Add Command] ... tambahkan "Advanced Save Options" yang saya masukkan tepat di atas "Simpan Pilihan"
Tracker1
4
Yah, saya tidak punya entri "UTF-8 tanpa tanda tangan" ... lalu apa masalahnya?
Marco Klein
14
Catatan: UTF-8 Tanpa Tanda Tangan berada di dekat bagian paling bawah daftar.
Keavon
29

Sekarang dengan gambar.

  1. Pergi ke File-> Save As.

    File / Simpan Sebagai

  2. Kemudian pada tombol Simpan klik pada segitiga dan klik Save with Encoding....

    Simpan dengan Pengkodean

  3. Klik ok untuk menimpa file kemudian dari daftar menemukan penyandian UTF-8 Without signature-> Klik OK.

    UTF-8 Tanpa tanda tangan

Semoga ini menghemat waktu Anda.

Matas Vaitkevicius
sumber
26

Saya telah membuat ekstensi Fix File Encoding yang mencegah Visual Studio 2010+ dari menambahkan BOM ke file UTF-8.

Sergey Vlasov
sumber
1
Terima kasih untuk plugin itu! Seharusnya ada cara lain untuk menentukan jenis file selain menggunakan ekspresi reguler dalam pengaturan akhiran file yang cocok. Juga, plugin hanya bertindak pada file ketika saya menyimpannya, ketika saya membuat javascript, awalnya memiliki BOM (3 byte ditambahkan).
Anders Lindén
6

Sayangnya ini tidak berfungsi dengan file csproj. Tidak ada "Opsi penyimpanan lanjutan" dan meskipun Anda telah menetapkannya menjadi "UTF-8 tanpa tanda tangan" untuk file cs, file csproj masih disimpan dengan BOM. Jika Anda menggunakan VSS masih mengeluh tentang file proyek.

Wray
sumber
Mungkin Anda harus pindah dari VSS ke SVN. Saya ingat melihat alat yang dapat membuat konversi untuk Anda. SVN gratis dan dengan harga murah Anda bisa menggunakan plugin SVN visual untuk studio visual Anda dan menggunakan SVN langsung dari UI.
Dave81
7
"Mungkin Anda harus pindah dari VSS ke SVN." Saran macam apa itu? Sebagian besar dari kita yang bekerja pada perangkat lunak perusahaan tidak dapat memilih dan memilih Sistem Kontrol Sumber kami. SVN memilikinya memiliki masalah yang mendorong penciptaan git, karena mereka muak dengan SVN.
Shiva
4

UTF-8 - Default "Save As" (Tanpa Tanda Tangan) - Permintaan untuk memasukkan Default untuk UTF Tanpa Tanda Tangan

VS 2017 secara alami mendukung EditorConfig sehingga solusi yang disarankan adalah menambahkan .editorconfigfile ke basis kode Anda dan mengatur charset => utf-8. Kemudian setelah Anda menyimpan file itu akan disimpan sebagai UTF-8 tanpa BOM.

Dave Anderson
sumber
Saya khawatir VS 2017 masih tidak mendukung charsetdi .editorconfig github.com/editorconfig/editorconfig-visualstudio/issues/…
BlazingFrog
2

Untuk vs2010 c ++, akan ada masalah dengan UTF8 tanpa BOM, ketika file sumber berisi karakter multi-byte (mis. Bahasa Cina).

Karakter-karakter itu tidak akan dikenali dengan benar tanpa BOM, dan menghasilkan kompilasi yang gagal.

Martin Wang
sumber
karena pada Windows tanpa BOM file akan dianggap memiliki encoding ANSI, sehingga akan rusak
phuclv
2

Baru-baru ini saya menemukan alat baris perintah kecil ini yang menambah atau menghapus BOM pada file UTF-8 yang disandikan secara arbiter : UTF BOM Utils ( tautan baru di github)

Sedikit kekurangan, Anda hanya dapat mengunduh kode sumber C ++ polos. Anda harus membuat makefile (dengan CMake , misalnya) dan mengompilasinya sendiri, biner tidak disediakan di halaman ini. Namun, untuk pengembang perangkat lunak ini seharusnya tidak menjadi masalah.

Wernfried Domscheit
sumber
1

Bahkan dengan solusi Dave81, Visual Studio 2015 Community masih mengembalikan file saya ke UTF8-BOM setiap kali saya menyimpan file html itu.

Ketika saya membuat file html itu, saya mengklik kanan pada proyek dan memilih "Tambah" kemudian menambahkan file HTML.

Secara default, Visual studio akan menyertakan <meta charset="utf-8" />tag dalam file HTML Anda.

Cukup menghapus tag kemudian menerapkan solusi Dave81 membuat masalah hilang nyata saat ini.

Tampaknya Visual Studio mem-parsing file html Anda dan ketika melihat bahwa tag itu mengkonversi file ke UTF8-BOM tanpa mempertimbangkan format file asli (UTF-8 tanpa BOM).

Saya akan membuat komentar langsung di bawah solusi Dave81, tetapi saya tidak punya cukup poin untuk melakukannya ...

Jonny
sumber
0

Untuk Visual Studio Code lakukan hal berikut:

  1. Dari kanan bawah, pilih pengodean saat ini masukkan deskripsi gambar di sini
  2. Dari opsi, Pilih Simpan dengan enconding masukkan deskripsi gambar di sini
  3. Dari opsi, pilih UTF-8 masukkan deskripsi gambar di sini
Mahesh
sumber
Kode VS dan VS sangat berbeda. Pertanyaan ini tentang VS
phuclv
meskipun pertanyaannya adalah untuk VS dan Anda menjawab untuk VScode yang memecahkan masalah saya maka upvoting itu
Ashu
-2
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

Kode ini akan membuat file dalam UTF-8 tanpa BOM

Jugendra Singh
sumber
pertanyaannya adalah tentang pengodean sambil menyimpan file kode sumber di IDE, bukan tentang pengaturan pengodean saat menulis beberapa file dalam kode C #
phuclv