2009-05-08 10 views
41

VSが奇妙なISOの代わりにUnicodeを常に使用するように強制する方法はありますか?csharpプロジェクト(Visual Studio/msbuildマシン)でソースファイルのエンコーディングを変更する方法は?

Vista(Visual Studio 2008)を使用してwinappのcsprojectに取り組んでいます。この問題は、Windows Server 2003(英語のロケール)でプロジェクトをビルドしたときに表示され、ポーランド語の発音区別記号がなくなったときに表示されます。

この問題は、不適切なソースファイルのエンコードが原因で発生していることが調査されました。ソースファイルがUTF-8エンコーディングを使用していないようです。

答えて

91

問題:コマンドラインから起動したコンパイラは、追加したばかりの国際的な文字のためにソースファイルを処理できません。

解決方法:ソースファイルをUTF-8エンコードで明示的に保存して、国際文字を保持します。あなたが設定されている

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

:どのようにするには

。ビルドサーバーと残りのチームが緑を待っていることを祈ってください。

+3

私は数分前にそれを理解しました。私は 'UTF-with-BOM'を使ってテスト用に1つのファイルを保存し、いくつかの無効な文字列を修正しました。すべてのソースに対してUTFを使用するためのVisual Studioの設定はありますか?数百のファイルを手動で変更するのは本当にばかげている。 – tomo

+0

しかし、回避策があります。たとえば、コンピュータの地域設定をたとえば英語などに設定して、別のエンコーディングを使用するVisual Studioを入手できます。これにより、VSは「Unicode UTF-8-Codepage 65001」ではなく「Western European - Codepade 1252」を使用するよう強制されます。再度、これはExpress版で動作し、私は完全なアプリケーションでそれが確実になると確信しています。 – ruslander

+4

この回避策は私を満足させるものではありません。私は、コンピュータの地域設定を目的に合わせて行うように設定しました。 CP 1252への切り替えもオプションではありません。明示的にCP65001を設定したいと思います。 私は研究に時間を費やしましたが、VS 2008のテンプレートはうまくいきました。それらはすべてBOM付きのUTF-8です。すべての悪の原因は、外部コンポーネントの生産者からの不正なコーダーのテンプレートです。 ASP.NET MVCの最近のリリースでもこの問題が発生しています。 – tomo

1

私はVS2015 vb.netプロジェクトで同じ問題を抱え、<CodePage>1250</CodePage>マーカーをvbproj/csprojファイルに追加して解決しました。私は<SchemaVersion>マーカーの後にそれをやった、プロジェクトを再構築し、それは私のために働いた。私はż、±などのポーランド語の手紙に問題がありました。 UTF-8 - 65001を試すこともできますが、動作しているかどうかは確認しませんでした。

関連する問題