UTF-8(BOMなし)で保存する必要のあるJavaScriptファイルがあります。Notepad++で正しい形式に変換するたびに、VisualStudioで開いたときにBOMを使用してUTF-8に戻されます。VS2010がそれを実行しないようにするにはどうすればよいですか?
別の質問ですが、Visual Studioで署名のないUTF-8は、BOMのないUTF-8と同じですか?
UTF-8(BOMなし)で保存する必要のあるJavaScriptファイルがあります。Notepad++で正しい形式に変換するたびに、VisualStudioで開いたときにBOMを使用してUTF-8に戻されます。VS2010がそれを実行しないようにするにはどうすればよいですか?
別の質問ですが、Visual Studioで署名のないUTF-8は、BOMのないUTF-8と同じですか?
BOMまたはバイトオーダーマークは、非常に煩わしい場合があります。Visual Studioは、ファイルを保存しない限りファイルを変更しません(Hansが言ったように)。
そして、これが問題の解決策 です。他のエンコーディングでファイルを保存する場合は、[名前を付けて保存]を選択し、ファイルダイアログの[保存]ボタンを拡張して、[エンコーディングで保存]を選択します。または、この設定を完全に削除したい場合は、[ファイル]メニューを開いて[詳細な保存オプション]を選択すると、[署名なしのUTF-8]を選択する必要があります(これで最後の質問にも答えられます:)。はい「署名なしのUTF-8」はBOMなしと同じです。
残念ながら、これはcsprojファイルでは機能しません。「高度な保存オプション」はありません。csファイルに対して「署名なしのUTF-8」に設定した場合でも、csprojファイルはBOMで保存されます。VSSを使用する場合でも、プロジェクトファイルについて文句を言います。
UTF-8-「名前を付けて保存」(署名なし)デフォルト-署名なしのUTFのデフォルトを含めるように要求
VS 2017はEditorConfigをネイティブにサポートしているため、推奨される解決策は
.editorconfig
、コードベースにファイルを追加して設定することcharset => utf-8
です。次に、ファイルを保存すると、BOMなしでUTF-8として保存されます。
最近、任意のUTF-8エンコードファイルでBOMを追加または削除するこの小さなコマンドラインツールを見つけました:UTF BOM Utils(githubの新しいリンク)
少し欠点がありますが、ダウンロードできるのはプレーンなC++ソースコードのみです。makefileを作成し(たとえば、CMakeを使用して)、自分でコンパイルする必要があります。このページにはバイナリはありません。ただし、ソフトウェア開発者にとって、これは問題にはならないはずです。
vs2010 c ++の場合、ソースファイルにマルチバイト文字(中国語など)が含まれていると、BOMなしのUTF8で問題が発生します。
これらの文字はBOMがないと正しく認識されず、コンパイルに失敗します。
Dave81のソリューションを使用しても、Visual Studio 2015 Communityは、そのhtmlファイルを保存するたびにファイルをUTF8-BOMに戻していました。
そのhtmlファイルを作成したら、プロジェクトを右クリックして[追加]を選択し、HTMLファイルを追加しました。
デフォルトでは、<meta charset="utf-8" />
VisualStudioはHTMLファイルにタグを含めます。
タグを削除してからDave81のソリューションを適用するだけで、今回は問題が完全に解消されました。
Visual Studioはhtmlファイルを解析し、そのタグを検出すると、元のファイル形式(BOMなしのUTF-8)を考慮せずにファイルをUTF8-BOMに変換するようです。
Dave81のソリューションの直下でコメントしたはずですが、それを行うのに十分なポイントがありませんでした...
標準ではBOMを使用しないことをお勧めしますが、[韓国語または中国語]などの複数バイトを使用する場合、VisualStudioにBOMがない場合に警告メッセージが表示されます。
実際、韓国語の文字列配列を作成しましたが、対応する文字列配列が実行時に壊れていました。
Visual Studioを使用する場合は、MS警告メッセージに従ってBOMを含むUTF-8を使用することをお勧めします。(マルチバイト文字を使用する場合)
.csprojファイルで高度な保存を実行するには、最初にプロジェクトを右クリックして[プロジェクトのアンロード]を選択し、プロジェクトをアンロードする必要があります。これにより、.csprojファイルを別のエンコーディングで保存できるようになります。
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);
このコードは、BOMなしでUTF-8でファイルを作成します