201 votes

UTF-8 sans BOM

J'ai des fichiers javascript qui doivent être sauvegardés en UTF-8 (sans BOM), chaque fois que je les convertis au bon format en Notepad++ Lorsque je les ouvre dans Visual Studio, ils sont ramenés à UTF-8 avec BOM. Comment puis-je empêcher VS2010 de faire cela ?

Autre question, UTF-8 sans signature dans Visual Studio est-il identique à UTF-8 sans BOM ?

15 votes

Un fichier sauvegardé avec (utf-8 sans BOM) est rétabli en (utf-8 avec BOM) c'est là le problème

0 votes

0 votes

La solution au problème de Kabaros est simple - il suffit de sauvegarder le fichier avec Visual Studio en utilisant uft-8 sans BOM. Oui, c'est possible - comme Keavon l'a remarqué "UTF-8 sans signature est tout en bas de la liste". Assez bizarre que l'utf-8 avec signature soit au début et que l'utf-8 sans signature soit presque à la fin, mais au moins cela résout ce problème frustrant.

255voto

Dave81 Points 1114

Le BOM ou Byte Order Mark est parfois assez gênant. Visual Studio ne modifie pas le fichier sauf si vous l'enregistrez (comme l'a dit Hans).

Et voici la solution à votre problème : Si vous voulez enregistrer un fichier avec d'autres encodages, sélectionnez enregistrer sous et étendez le bouton d'enregistrement dans la boîte de dialogue du fichier et sélectionnez "Enregistrer avec encodage". Ou si vous voulez vous débarrasser de ce paramètre de façon permanente, ouvrez simplement le menu Fichier et sélectionnez "Options d'enregistrement avancées" et là vous devriez sélectionner "UTF-8 sans signature" (et cela répond aussi à votre dernière question :). Oui, "UTF-8 sans signature" est identique à "sans BOM".

16 votes

Je me demandais s'il existait une option permettant d'activer cette fonction par défaut pour tous les fichiers.

4 votes

Le fichier a été enregistré correctement lorsque j'ai choisi "Enregistrer avec le codage", mais je ne vois pas "Options d'enregistrement avancées" dans mon menu Fichier, quel que soit le type de fichier ouvert dans l'éditeur. Hm....

0 votes

Quelle version de Visual Studio utilisez-vous ?

28voto

Sergey Vlasov Points 2615

J'ai créé le Corriger l'encodage des fichiers qui empêche Visual Studio 2010+ d'ajouter le BOM aux fichiers UTF-8.

1 votes

Merci pour ce plugin ! Il devrait y avoir un autre moyen de spécifier les types de fichiers que d'utiliser une expression régulière dans les paramètres correspondant aux suffixes des fichiers. De plus, le plugin n'agit sur les fichiers que lorsque je les enregistre, lorsque je crée un javascript, il a initialement une BOM (3 octets ajoutés).

6voto

Wray Points 31

Malheureusement, cela ne fonctionne pas avec les fichiers csproj. Il n'y a pas d'"option d'enregistrement avancée" et même si vous l'avez définie sur "UTF-8 sans signature" pour un fichier cs, les fichiers csproj sont toujours enregistrés avec la nomenclature. Si vous utilisez VSS, il se plaint toujours des fichiers de projet.

0 votes

Vous devriez peut-être passer de VSS à SVN. Je me souviens avoir vu un outil qui peut faire la conversion pour vous. SVN est gratuit et avec un petit prix, vous pouvez ajouter le plugin Visual SVN à votre Visual Studio et utiliser SVN directement depuis l'interface utilisateur.

7 votes

"Vous devriez peut-être passer de VSS à SVN.". Qu'est-ce que c'est que cette suggestion ? La plupart d'entre nous travaillant sur des logiciels d'entreprise n'ont pas la possibilité de choisir leur système de contrôle de source. SVN a ses propres problèmes et c'est ce qui a motivé la création de git, parce qu'ils en avaient assez de SVN.

2voto

Martin Wang Points 138

Pour vs2010 c++, il y aura des problèmes avec UTF8 sans BOM, lorsque les fichiers sources contiennent des caractères multi-octets (ex. chinois).

Ces caractères ne seront pas reconnus correctement sans la nomenclature, et le calcul échouera.

0 votes

Parce que sous Windows, sans nomenclature, le fichier sera supposé avoir un encodage ANSI, et sera donc cassé.

0voto

Redee Points 21

Oui, ce n'est pas correct avec mes caractères cyrilliques si la source est en UTF-8 sans BOM, mais avec BOM, tout est fait. Sinon, il faut >

setlocale(LC_ALL,"");

Mais ce n'est pas une solution 4 beaucoup de mes fichiers *.php sans BOM.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X