Malzeme Listesi olmadan UTF-8


180

Ben onları UTF-8 (BOM olmadan) kaydedilmesi gereken javascript dosyaları var, onları Notepad ++ doğru biçime dönüştürmek her zaman , onlar Visual Studio'da açtığınızda BOM ile UTF-8 geri döndürülür. VS2010'un bunu yapmasını nasıl durdurabilirim?

Başka bir soru, Visual Studio'da imzasız UTF-8, BOM'suz UTF-8 ile aynı mı?


13
(BOM olmadan utf-8) ile kaydedilen bir dosya (BOM ile utf-8) olarak geri döndürülür .. sorun bu
kabaros


Kabaros sorununun çözümü basit - sadece görsel stüdyo ile BOM olmadan uft-8 kullanarak dosyayı kaydedin. Evet, mümkün - Keavon'un "İmzasız UTF-8 listenin en altına yakın" olduğunu fark ettiği gibi. İmzalı utf-8'in başında ve imzasız utf-8'in neredeyse sonunda olması oldukça garip, ama en azından bu sinir bozucu sorunu çözüyor.
cyriel

Yanıtlar:


227

BOM veya Byte Order Markası bazen oldukça can sıkıcıdır. Visual Studio, kaydetmedikçe (Hans'ın dediği gibi) dosyayı değiştirmez.

Ve sorununuzun çözümü şudur: Bir dosyayı diğer kodlamalar ile kaydetmek istiyorsanız, farklı kaydet'i seçin ve dosya iletişim kutusunda kaydet düğmesini genişletin ve "Kodlamayla kaydet" i seçin. Veya bu ayardan kalıcı olarak kurtulmak istiyorsanız, Dosya menüsünü açın ve "Gelişmiş kaydetme seçenekleri" ni seçin ve orada "İmzasız UTF-8" i seçmelisiniz (ve bu da son sorunuza cevap verdi :). Evet "İmzasız UTF-8", Malzeme Listesi olmadan aynıdır.


11
Tüm dosyalar için bunu varsayılan olarak etkinleştirmek için bir seçenek olup olmadığını merak ediyordum.
mihai

3
"Kodlama ile kaydet" i seçtiğimde dosyayı düzgün şekilde kaydetti, ancak düzenleyicide ne tür bir dosya açtığım önemli değil, Dosya menümde "Gelişmiş kaydetme seçenekleri" ni göremiyorum. Hm ....
Chris Jaynes

20
@ChrisJaynes menü çubuğuna sağ tıklayın, ardından açık bir noktaya, ardından özelleştir ... komutlarına tıklayın ... (*) menü çubuğu: Dosya ... [Komut Ekle] ... "Gelişmiş Kaydetme Seçenekleri" ne ekle "Seçimi Kaydet" in hemen üstünde
Tracker1

4
"İmzasız UTF-8" girdim yok ... sorun ne o zaman?
Marco Klein

14
Not: UTF-8 İmzasız listenin en altına yakındır.
Keavon

29

Şimdi resimlerle.

  1. Gidin File-> Save As.

    Dosya / Farklı Kaydet

  2. Sonra Kaydet düğmesine tıklayın üçgen ve tıklayın Save with Encoding....

    Kodlama ile Kaydet

  3. Dosyanın üzerine yazmak için Tamam'ı ve ardından kodlama listesinden bul UTF-8 Without signature-> Tıkla'yı tıklayın OK.

    UTF-8 İmzasız

Umarım bu size biraz zaman kazandırır.


26

Visual Studio 2010+ uygulamasının UTF-8 dosyalarına BOM eklemesini engelleyen Dosya Düzeltme Kodlaması uzantısını oluşturdum .


1
Bu eklenti için teşekkürler! Dosya türlerini belirtmenin, dosya sonekleriyle eşleşen ayarlarda normal ifade kullanmaktan başka bir yolu olmalıdır. Ayrıca, eklenti yalnızca dosyaları kaydettiğimde çalışır, bir javascript oluşturduğumda başlangıçta bir BOM (3 bayt eklenir) vardır.
Anders Lindén

6

Ne yazık ki bu csproj dosyalarıyla çalışmaz. "Gelişmiş kaydetme seçeneği" yoktur ve bir cs dosyası için "İmzasız UTF-8" olarak ayarlamış olsanız bile, csproj dosyaları hala Malzeme Listesi ile kaydedilir. VSS kullanıyorsanız yine de proje dosyaları hakkında şikayet ediyor.


Belki VSS'den SVN'ye geçmelisin. Dönüşümü sizin için yapabilen bir araç gördüğümü hatırlıyorum. SVN ücretsizdir ve küçük bir fiyatla görsel SVN eklentisini görsel stüdyonuza ekleyebilir ve SVN'yi doğrudan kullanıcı arayüzünden kullanabilirsiniz.
Dave81

7
"Belki VSS'den SVN'ye geçmelisin." Bu nasıl bir öneri? Kurumsal yazılım üzerinde çalışan çoğumuz Kaynak Kontrol Sistemimizi seçip seçemiyoruz. SVN'de, git'in oluşturulmasını sağlayan sorunlar var, çünkü SVN'den bıkmışlardı.
Shiva


2

Vs2010 c ++ için, kaynak dosyalar çok baytlı karakterler (ör. Çince) içerdiğinde BOM'siz UTF8 ile ilgili sorunlar olacaktır.

Bu karakterler Malzeme Listesi olmadan doğru olarak tanınmayacak ve başarısız işlemeye neden olacaktır.


çünkü
BOM'suz

2

Son zamanlarda, arbitary UTF-8 kodlu dosyalarda BOM'yi ekleyen veya kaldıran bu küçük komut satırı aracını buldum: UTF BOM Utils ( github'da yeni bağlantı )

Küçük dezavantaj, sadece düz C ++ kaynak kodunu indirebilirsiniz. Makefile'ı ( örneğin CMake ile ) oluşturmanız ve kendiniz derlemeniz gerekir, bu sayfada ikili dosyalar sağlanmaz. Ancak, bir yazılım geliştiricisi için bu herhangi bir sorun olmamalıdır.


1

Dave81'in çözümü ile bile, Visual Studio 2015 Topluluğu o html dosyasını her kaydettiğimde dosyamı UTF8-BOM'a geri döndürüyordu.

Bu html dosyasını oluşturduğumda, projeye sağ tıklayıp "Ekle" yi seçip bir HTML dosyası ekledim.

Varsayılan olarak, Visual studio <meta charset="utf-8" />HTML dosyanıza bir etiket ekler.

Etiketi kaldırmak ve ardından Dave81'in çözümünü uygulamak sorunu bu kez gerçekte ortadan kaldırdı.

Görünüşe göre Visual Studio html dosyanızı ayrıştırır ve etiketi gördüğünde, dosyayı orijinal dosya biçimine (BOM olmadan UTF-8) bakmadan UTF8-BOM'ye dönüştürür.

Doğrudan Dave81'in çözümü altında bir yorum yapardım, ama bunu yapmak için yeterli puanım yoktu ...


0

İçin Visual Studio Kodu aşağıdakileri yapın:

  1. Sağ alttan geçerli kodlamayı seçin resim açıklamasını buraya girin
  2. Seçeneklerden, Muhafaza ile kaydet'i seçin resim açıklamasını buraya girin
  3. Seçenekler arasından UTF-8'i seçin resim açıklamasını buraya girin

VS ve VS kodu çok farklıdır. Bu soru VS hakkında
phuclv

soru VS için olsa ve benim prob böylece çözdü VScode cevap verdim
Ashu

-2
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

Bu kod BOM olmadan UTF-8'de dosya oluşturur


soru IDE'ye bir kaynak kodu dosyası kaydedilirken kodlama ile ilgili, C # kodunda bir dosya yazarken kodlamayı ayarlamakla ilgili değil
phuclv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.