UTF-8 senza DBA


180

Ho dei file javascript di cui ho bisogno per salvarli in UTF-8 (senza BOM), ogni volta che li converto nel formato corretto in Notepad ++ , vengono ripristinati in UTF-8 con BOM quando li apro in Visual Studio. Come posso impedire a VS2010 di farlo?

Un'altra domanda, UTF-8 senza firma in Visual Studio è uguale a UTF-8 senza BOM?


13
un file salvato con (utf-8 senza BOM) viene ripristinato (utf-8 con BOM) .. questo è il problema
kabaros


La soluzione al problema di kabaros è semplice: basta salvare il file con Visual Studio usando UFT-8 senza BOM. Sì, è possibile - come notato da Keavon "UTF-8 senza firma è quasi in fondo all'elenco." Abbastanza strano che utf-8 con firma sia all'inizio e utf-8 senza firma è quasi alla fine, ma almeno risolve questo problema frustrante.
Cyriel,

Risposte:


227

BOM o Byte Order Mark a volte è piuttosto fastidioso. Visual Studio non modifica il file se non lo si salva (come ha detto Hans).

Ed ecco la soluzione al tuo problema: se vuoi salvare un file con altre codifiche seleziona salva come ed estendi il pulsante Salva nella finestra di dialogo del file e seleziona "Salva con codifica". Oppure, se vuoi eliminare definitivamente questa impostazione, apri il menu File e seleziona "Opzioni di salvataggio avanzate" e lì dovresti selezionare "UTF-8 senza firma" (e che ha anche risposto alla tua ultima domanda :). Sì "UTF-8 senza firma" è uguale a senza distinta componenti.


11
Mi chiedevo se c'è un'opzione per abilitare questo per impostazione predefinita per tutti i file.
Mihai,

3
Ha salvato correttamente il file quando ho scelto "Salva con codifica", ma non vedo "Opzioni di salvataggio avanzate" nel menu File, indipendentemente dal tipo di file che ho aperto nell'editor. Hm ....
Chris Jaynes,

20
@ChrisJaynes fai clic con il pulsante destro del mouse sulla barra dei menu, in un punto aperto, quindi fai clic su personalizza ... comandi ... (*) barra dei menu: File ... [Aggiungi comando] ... aggiungi nelle "Opzioni di salvataggio avanzate" che inserisco proprio sopra "Salva selezione"
Tracker1

4
Bene, non ho la voce "UTF-8 senza firma" ... qual è il problema allora?
Marco Klein,

14
Nota: UTF-8 senza firma è quasi in fondo all'elenco.
Keavon,

29

Ora con le foto.

  1. Vai a File-> Save As.

    File / Salva con nome

  2. Quindi sul pulsante Salva fai clic sul triangolo e fai clic Save with Encoding....

    Salva con codifica

  3. Fare clic su OK per sovrascrivere il file, quindi dall'elenco delle codifiche trovare UTF-8 Without signature-> Fare clic OK.

    UTF-8 Senza firma

Spero che questo ti faccia risparmiare un po 'di tempo.


26

Ho creato l' estensione Fix File Encoding che impedisce a Visual Studio 2010+ di aggiungere BOM ai file UTF-8.


1
Grazie per quel plugin! Dovrebbe esserci un altro modo per specificare i tipi di file che utilizzare un'espressione regolare nei suffissi dei file corrispondenti alle impostazioni. Inoltre, il plugin agisce sui file solo quando li salvo, quando creo un javascript, inizialmente ha una DBA (3 byte aggiunti).
Anders Lindén il

6

Purtroppo questo non funziona con i file csproj. Non esiste alcuna "Opzione di salvataggio avanzata" e anche se è stato impostato su "UTF-8 senza firma" per un file cs, i file csproj vengono comunque salvati con BOM. Se usi VSS si lamenta comunque dei file di progetto.


Forse dovresti passare da VSS a SVN. Ricordo di aver visto uno strumento che può fare la conversione per te. SVN è gratuito e con un piccolo prezzo puoi inserire il plug-in SVN visivo nel tuo studio visivo e utilizzare SVN direttamente dall'interfaccia utente.
Dave81,

7
"Forse dovresti passare da VSS a SVN.". Che tipo di suggerimento è quello? La maggior parte di noi che lavora su software aziendali non è in grado di scegliere il nostro sistema di controllo del codice sorgente. SVN ha dei problemi che hanno spinto la creazione di git, perché erano stufi di SVN.
Shiva,

4

UTF-8 - Predefinito "Salva con nome" (senza firma) - Richiesta di includere l'impostazione predefinita per UTF senza firma

VS 2017 supporta nativamente EditorConfig, quindi una soluzione consigliata è quella di aggiungere .editorconfigfile alla base di codice e impostare charset => utf-8. Quindi, una volta salvato un file, questo verrà salvato come UTF-8 senza BOM.


Temo che VS 2017 non supporti ancora charsetin .editorconfig github.com/editorconfig/editorconfig-visualstudio/issues/…
BlazingFrog,

2

Per vs2010 c ++, ci saranno problemi con UTF8 senza BOM, quando i file di origine contengono caratteri multi-byte (ad es. Cinese).

Quei personaggi non verranno riconosciuti correttamente senza la distinta componenti e non verranno completati correttamente.


perché su Windows senza BOM si presume che il file abbia la codifica ANSI, quindi verrà interrotto
phuclv,

2

Recentemente ho trovato questo piccolo strumento da riga di comando che aggiunge o rimuove la distinta base dai file codificati UTF-8 arbitrari: UTF BOM Utils ( nuovo link su github)

Piccolo inconveniente, puoi scaricare solo il semplice codice sorgente C ++. Devi creare il makefile (con CMake , per esempio) e compilarlo da solo, i binari non sono forniti in questa pagina. Tuttavia, per uno sviluppatore di software questo non dovrebbe essere un problema.


1

Anche con la soluzione di Dave81, Visual Studio 2015 Community stava ancora ripristinando il mio file in UTF8-BOM ogni volta che salvavo quel file html.

Quando ho creato quel file html, ho fatto clic con il pulsante destro del mouse sul progetto e selezionato "Aggiungi", quindi ho aggiunto un file HTML.

Per impostazione predefinita, Visual Studio includerà un <meta charset="utf-8" />tag nel tuo file HTML.

La semplice rimozione del tag e l'applicazione della soluzione di Dave81 hanno risolto il problema questa volta.

Sembra che Visual Studio analizzi il tuo file html e quando vede quel tag converte il file in UTF8-BOM senza alcuna considerazione nel formato di file originale (UTF-8 senza BOM).

Avrei fatto un commento direttamente sotto la soluzione di Dave81, ma non avevo abbastanza punti per farlo ...


0

Per Visual Studio Code, procedi come segue:

  1. In basso a destra, seleziona la codifica corrente inserisci qui la descrizione dell'immagine
  2. Dalle opzioni, selezionare Salva con codifica inserisci qui la descrizione dell'immagine
  3. Dalle opzioni, selezionare UTF-8 inserisci qui la descrizione dell'immagine

Il codice VS e VS sono molto diversi. Questa domanda riguarda VS
phuclv il

sebbene la domanda fosse per VS e tu avessi risposto per VScode che risolveva la mia prob e quindi la votava
Ashu

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

Questo codice creerà il file in UTF-8 senza BOM


la domanda è sulla codifica durante il salvataggio di un file di codice sorgente nell'IDE, non sull'impostazione della codifica durante la scrittura di un file nel codice C #
phuclv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.