2009-05-08 9 views
41

Gibt es eine Möglichkeit, VS zu zwingen, immer Unicode zu verwenden, anstatt seltsames ISO-Etwas?Wie ändert man die Kodierung der Quelldatei im Csharp-Projekt (Visual Studio/Msbuild-Maschine)?

Ich arbeite an einem Winapp-Projekt mit Visual Studio 2008 unter Vista (polnisches Gebietsschema). Das Problem tritt auf, wenn ich das Projekt auf Win Server 2003 (englisches Gebietsschema) erstelle - dann ist das polnische Diakritikum weg.

Ich habe untersucht, dass das Problem durch falsche Codierung der Quelldatei verursacht wird. Es sieht so aus, dass Quelldateien keine UTF-8-Kodierung verwenden.

Antwort

91

Problem: Der über die Befehlszeile gestartete Compiler kann die Quelldatei aufgrund der internationalen Zeichen, die ich gerade hinzugefügt habe, nicht verarbeiten.

Lösung: Speichern Sie Quelldatei explizit in UTF-8-Codierung, um internationale Zeichen zu bewahren.

How To:

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

Sie setzen sind. Verpflichten Sie sich, den Build-Server und den Rest des Teams auf Grün zu warten.

+3

Ich habe es vor ein paar Minuten herausgefunden. Ich habe eine Datei für den Test mit 'UTF-with-BOM' gespeichert und ein paar ungültige Zeichenfolgen repariert. Gibt es eine Einstellung für Visual Studio, UTF für alle Quellen zu verwenden? Es ist wirklich dumm, es manuell für ein paar hundert Dateien zu ändern. – tomo

+0

Es gibt jedoch eine Arbeit um - Sie können Visual Studio eine andere Codierung verwenden, indem Sie die regionalen Einstellungen des Computers beispielsweise auf Englisch festlegen. Dies würde VS dazu zwingen, "Westeuropa - Codepage 1252" anstelle von "Unicode UTF-8 - Codepage 65001" zu verwenden. Auch das funktioniert in der Express Edition und ich bin mir ziemlich sicher, dass es in der vollen Anwendung sein wird. – ruslander

+4

Diese Problemumgehung erfüllt mich nicht. Ich setze Computer-Regionaleinstellungen, um absichtlich zu polieren, also ist es keine Option, sie zu wechseln. Auch der Wechsel zum CP 1252 ist nicht möglich. Ich möchte explizit CP65001 setzen. Ich verbrachte einige Zeit für die Forschung und was ich sehe, dass VS 2008 Vorlagen sind in Ordnung - sie sind alle UTF-8 mit BOM. Die Quelle allen Übels sind Vorlagen von schlampigen Programmierern von externen Komponentenherstellern. Auch die neueste Version von ASP.NET MVC hat dieses Problem. – tomo

1

Ich hatte die gleichen Probleme mit VS2015 vb.net Projekt und löste es durch Hinzufügen von <CodePage>1250</CodePage> Marker zu Ihrer vbproj/csproj-Datei. Ich habe es nach <SchemaVersion> Marker, baute das Projekt und es funktionierte für mich. Ich hatte Probleme mit polnischen Buchstaben wie ż, ą etc. Sie können auch die UTF-8 - 65001 ausprobieren, aber ich habe nicht überprüft, ob es funktioniert.