2009-05-08 6 views
41

C'è un modo per forzare VS a usare Unicode sempre, invece di strani ISO-qualcosa?come cambiare la codifica del file sorgente nel progetto csharp (visual studio/msbuild machine)?

Sto lavorando a un winapp csproject utilizzando Visual Studio 2008 su Vista (locale polacco). Il problema appare quando costruisco il progetto su Win Server 2003 (locale in inglese) - quindi il diacritico polacco è sparito.

Ho verificato che il problema è causato da una codifica del codice sorgente errata. Sembra che i file di origine non utilizzino la codifica UTF-8.

risposta

91

Problema: il compilatore avviato dalla riga di comando non può elaborare il file di origine a causa di caratteri internazionali che ho appena aggiunto.

Soluzione: salvare il file sorgente in modo esplicito nella codifica UTF-8 per conservare i caratteri internazionali.

Come:

* open the problematic file in Visual Studio. 
* on the File menu click “Advanced Save Options“ 
* from “Encoding” combo select “Unicode (UTF-8 …“ 
* click OK. 

siete a posto. Impegnarsi a compiacere il server di build e il resto del team in attesa di verde.

+3

L'ho capito qualche momento fa. Ho salvato un file per il test utilizzando 'UTF-with-BOM' e ha corretto un paio di stringhe non valide. C'è qualche impostazione per Visual Studio per utilizzare UTF per tutte le fonti? È davvero stupido modificarlo manualmente per poche centinaia di file. – tomo

+0

Esiste tuttavia un problema: è possibile ottenere Visual Studio per utilizzare una codifica diversa impostando le impostazioni internazionali del computer, ad esempio, in inglese, ad esempio. Ciò a sua volta costringerebbe VS a utilizzare "Western European - Codepade 1252" anziché "Unicode UTF-8 - Codepage 65001". Di nuovo, questo funziona nell'edizione Express e sono abbastanza sicuro che sarà nella piena applicazione. – ruslander

+4

Questa soluzione non mi soddisfa. Ho impostato le impostazioni internazionali del computer per la lucidatura di proposito, quindi il passaggio non è un'opzione. Anche il passaggio a CP 1252 non è un'opzione. Voglio impostare esplicitamente CP65001. Ho trascorso un po 'di tempo per la ricerca e quello che vedo che i modelli VS 2008 vanno bene - sono tutti UTF-8 con BOM. La fonte di tutti i mali sono modelli di codificatori scadenti di produttori di componenti esterni. Anche la recente versione di ASP.NET MVC presenta questo problema. – tomo

1

Ho avuto gli stessi problemi con VS2015 progetto vb.net e risolto con l'aggiunta di marcatore <CodePage>1250</CodePage> al file vbproj/csproj. L'ho fatto dopo il marcatore <SchemaVersion>, ho ricostruito il progetto e ha funzionato per me. Ho avuto problemi con lettere polacche come ż, ± ecc. Puoi anche provare l'UTF-8 - 65001 ma non ho verificato se funziona.

Problemi correlati