2011-10-06 29 views
6

Visual Studio 2010'u Kullanma. TortoiseHg'in ikili olduğunu düşündüğü bir resource.h dosyasına sahibim, böylece bu işlem penceresinde bir fark görüntülenmeyecek. Dosyayı bir metin düzenleyicisinde kolayca açabilirim ve bunun düz metin olduğunu görebilirim.TortoiseHg, Resource.h'nin neden ikili olduğunu düşünüyor?

İlgili bir soru (Why does Mercurial think my SQL files are binary?) dosya kodlama ile ilgili olduğunu önerdi. Aslında dosyayı Notepad ++ 'da açmak, dosyanın "UCS-2 Little Endian" içinde olduğunu söylüyor. Bunu nasıl düzeltebilirim? Açıkçası, bazı Visual Studio beklentilerini kırmak istemiyorum.

cevap

7

Yalnızca görüntüleme amacıyla, Mercurial uzun zamandır devam eden UNIX sözleşmesi nedeniyle ikili olarak NUL bayt içeren tüm dosyaları ele alır. Bu hemen her zaman doğru .. UTF-16 (eski adı UCS-2) hariç). Dosyanızın yarısı NUL bayttır!

Dahili olarak, Mercurial, dosyasını dosyalarının tümünü ikili olarak kabul eder, bu nedenle bu sorun sadece farklılıkları görüntülemeye çalışıp çalışmadığımızı anlatan şeyler için geçerlidir.

  • UTF-16 Bazı web "resource.h utf aramış
  • dışında bir kodlama kullanın Mercurial iyi çalışacaktır

    +1

    Bu iş parçacığında anlatıldığı gibi, Visual Studio içinden, resource.h dosyasını açtım ve File-> Advanced Save Options (Dosya -> Gelişmiş Kaydetme Seçenekleri) menüsüne gittim ve "Unicode (UTF-8 imzalı) - Codepage 65001" kodlamasını seçtim. İki işlemden sonra artık uygun bir fark görebiliyorum. – User

    +1

    Düzeltme, "Unicode (imzalı UTF-8) - Codepage 65001" in kaynak editörünü düzenledikten sonra Visual Studio, Visual Studio dosyası olmadığından şikayetçi. Bunun yerine, "US-ASCII" (bu yanıtta bağlantılı iş parçacığında anlatıldığı gibi) kullandım. Belki de sorun UTF-8 imzasıydı? İmza yok diye bir seçenek var, ama şimdilik çözdüğüm problemi düşünüyorum. – User

    +1

    Her zaman imzasız seçeneğini tercih edin. BOM (söz konusu imza), birçok programda yaygın bir sorun kaynağıdır. Ve BOM olmasa bile, ASCII aralığının dışında bir karakter içerdiğinde, UTF-8 ve ISO-8859-1 arasındaki farkı otomatik olarak algılamak nispeten kolaydır, gerçekten de değer eklemez. –

    5

    açıkça/dönüştürme UTF-8/ASCII ve görmek için kodlamayı değiştirmeyi deneyin. Bunu Notepad ++ 'nin Encoding menüsünden (UTF-8'de Kodla'yı seçin)

    Visual Studio, UTF-8 dosyasıyla düzgün çalışacaktır.

    +1

    Visual Studio 2008 ve 2013'te test edilen .rc dosyası için doğru değil. Derleme sırasında "hata RC2135: dosya bulunamadı: 0x07" gibi birçok hata alıyorum. Resource.h olsa da, UTF-8 olabilir. –

    İlgili konular