UTF-8 sans nomenclature


182

J'ai des fichiers javascript dont j'ai besoin qu'ils soient enregistrés en UTF-8 (sans BOM), chaque fois que je les convertis au format correct dans Notepad ++ , ils sont rétablis en UTF-8 avec BOM lorsque je les ouvre dans Visual Studio. Comment puis-je empêcher VS2010 de faire cela?

Une autre question, est-ce que UTF-8 sans signature dans Visual Studio est identique à UTF-8 sans BOM?


14
un fichier enregistré avec (utf-8 sans nomenclature) est rétabli en (utf-8 avec nomenclature) .. c'est le problème
kabaros


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 près du bas de la liste." C'est assez étrange que utf-8 avec signature soit au début et utf-8 sans signature soit presque à la fin, mais au moins, cela résout ce problème frustrant.
cyriel

Réponses:


230

La nomenclature ou la marque d'ordre d'octet est parfois assez ennuyeuse. 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 souhaitez enregistrer un fichier avec d'autres encodages, sélectionnez Enregistrer sous et étendez le bouton Enregistrer dans la boîte de dialogue de fichier et sélectionnez "Enregistrer avec encodage". Ou si vous voulez vous débarrasser de ce paramètre de manière permanente, ouvrez simplement le menu Fichier et sélectionnez "Options d'enregistrement avancées" et là, vous devez sélectionner "UTF-8 sans signature" (et cela a également répondu à votre dernière question :). Oui "UTF-8 sans signature" est identique à sans nomenclature.


11
Je me demandais s'il y avait une option pour l'activer par défaut pour tous les fichiers.
mihai

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

20
@ChrisJaynes faites un clic droit sur la barre de menu, dans un endroit ouvert, puis cliquez sur personnaliser ... commandes ... (*) barre de menus: Fichier ... [Ajouter une commande] ... ajouter dans les "Options d'enregistrement avancées" que j'ai mis juste au-dessus de "Enregistrer la sélection"
Tracker1

4
Eh bien, je n'ai pas l'entrée "UTF-8 sans signature" ... quel est le problème alors?
Marco Klein

14
Remarque: UTF-8 sans signature se trouve tout en bas de la liste.
Keavon

30

Maintenant avec des photos.

  1. Allez à File-> Save As.

    Fichier / Enregistrer sous

  2. Puis sur le bouton Enregistrer, cliquez sur le triangle et cliquez sur Save with Encoding....

    Enregistrer avec l'encodage

  3. Cliquez sur ok pour écraser le fichier puis à partir de la liste des encodages trouver UTF-8 Without signature-> Cliquez OK.

    UTF-8 Sans signature

J'espère que cela vous fera gagner du temps.


26

J'ai créé l' extension Fix File Encoding qui empêche Visual Studio 2010+ d'ajouter une nomenclature aux fichiers UTF-8.


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

6

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.


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

7
"Peut-être que vous devriez passer de VSS à SVN.". De quel genre de suggestion s'agit-il? La plupart d'entre nous qui travaillent sur des logiciels d'entreprise n'ont pas la possibilité de choisir notre système de contrôle de source. SVN a ses propres problèmes, ce qui a motivé la création de git, car ils en avaient assez de SVN.
Shiva

4

UTF-8 - "Enregistrer sous" (sans signature) par défaut - Demande d'inclusion par défaut pour UTF sans signature

VS 2017 prend en charge nativement EditorConfig, donc une solution recommandée consiste à ajouter un .editorconfigfichier à votre base de code et à définir charset => utf-8. Ensuite, une fois que vous avez enregistré un fichier, il sera enregistré au format UTF-8 sans BOM.


J'ai bien peur que VS 2017 ne soit toujours pas pris en charge charsetdans .editorconfig github.com/editorconfig/editorconfig-visualstudio/issues/…
BlazingFrog

2

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

Ces caractères ne seront pas reconnus correctement sans nomenclature et entraîneront un échec de conformité.


parce que sous Windows sans BOM le fichier sera supposé avoir le codage ANSI, donc il sera cassé
phuclv

2

Récemment, j'ai trouvé ce petit outil de ligne de commande qui ajoute ou supprime la nomenclature sur des fichiers encodés UTF-8 arbitraires: UTF BOM Utils ( nouveau lien sur github)

Petit inconvénient, vous ne pouvez télécharger que le code source C ++. Vous devez créer le makefile (avec CMake , par exemple) et le compiler vous-même, les binaires ne sont pas fournis sur cette page. Cependant, pour un développeur de logiciel, cela ne devrait pas être un problème.


1

Pour Visual Studio Code, procédez comme suit:

  1. En bas à droite, sélectionnez l'encodage actuel entrez la description de l'image ici
  2. Dans les options, sélectionnez Enregistrer avec encondant entrez la description de l'image ici
  3. Dans les options, sélectionnez UTF-8 entrez la description de l'image ici

Les codes VS et VS sont très différents. Cette question concerne VS
phuclv

bien que la question soit pour VS et vous avez répondu pour VScode, ce qui a résolu mon problème, donc le vote à la hausse
Ashu

1

Même avec la solution de Dave81, Visual Studio 2015 Community rétablissait toujours mon fichier en UTF8-BOM chaque fois que j'enregistrais ce fichier html.

Lorsque j'ai créé ce fichier html, j'ai fait un clic droit sur le projet et sélectionné "Ajouter" puis ajouté un fichier HTML.

Par défaut, Visual studio inclura une <meta charset="utf-8" />balise dans votre fichier HTML.

Le simple fait de retirer la balise puis d'appliquer la solution de Dave81 a résolu le problème pour de vrai cette fois.

Il semble que Visual Studio analyse votre fichier html et quand il voit cette balise, il convertit le fichier en UTF8-BOM sans aucune considération pour le format de fichier d'origine (UTF-8 sans BOM).

J'aurais fait un commentaire directement sous la solution de Dave81, mais je n'avais pas assez de points pour le faire ...


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

Ce code créera un fichier en UTF-8 sans nomenclature


la question concerne l'encodage lors de l'enregistrement d'un fichier de code source dans l'EDI, pas la définition de l'encodage lors de l'écriture d'un fichier en code C #
phuclv
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.