BOMなしのUTF-8


180

私はそれらをUTF-8(BOMなし)で保存する必要があるJavaScriptファイルを持っています。それらをNotepad ++で正しい形式に変換するたびに、それらはVisual Studioで開くとBOM付きのUTF-8に戻されます。どうすればVS2010がそれを止めることができますか?

別の質問、Visual Studioの署名なしのUTF-8はBOMなしのUTF-8と同じですか?


13
(BOMなしのutf-8)で保存されたファイルは(BOM付きのutf-8)に戻されます..これが問題です
kabaros


カバロス問題の解決策は簡単です-BOMなしでuft-8を使用してVisual Studioでファイルを保存するだけです。はい、それは可能です-Keavonが気づいたように、「署名なしのUTF-8はリストの一番下にあります」。署名付きのutf-8が最初にあり、署名なしのutf-8がほとんど最後にあるのはかなり奇妙ですが、少なくともこのイライラする問題を解決します。
cyriel 2015年

回答:


227

BOMまたはバイトオーダーマークは、非常に煩わしい場合があります。Visual Studioは、(Hansが言ったように)保存しない限りファイルを変更しません。

そして、これがあなたの問題の解決策 です他のエンコーディングでファイルを保存したい場合は、名前を付けて保存を選択し、ファイルダイアログの保存ボタンを拡張して、「エンコーディングで保存」を選択してください。または、この設定を完全に削除する場合は、[ファイル]メニューを開いて[詳細な保存オプション]を選択し、[署名なしのUTF-8]を選択する必要があります(これも最後の質問に回答しました:)。はい「署名なしのUTF-8」はBOMなしと同じです。


11
すべてのファイルに対してデフォルトでこれを有効にするオプションがあるかどうか疑問に思っていました。
mihai 2012年

3
「エンコードして保存」を選択するとファイルは適切に保存されましたが、エディターで開いたファイルの種類に関係なく、「ファイル」メニューに「詳細な保存オプション」が表示されません。フム....
クリスジェインズ

20
@ChrisJaynes開いた場所でメニューバーを右クリックし、[カスタマイズ...]コマンドをクリックします。...(*)メニューバー:ファイル... [コマンドの追加] ...追加した[詳細な保存オプション]に追加します[選択を保存]の真上
Tracker1

4
さて、「署名なしのUTF-8」というエントリはありません...では、何が問題なのでしょうか?
Marco Klein

14
注:署名なしのUTF-8はリストの一番下にあります。
Keavon 2014年

29

今写真付き。

  1. File->に移動しSave Asます。

    ファイル/名前を付けて保存

  2. 次に、[保存]ボタンで三角形をクリックし、をクリックしますSave with Encoding...

    エンコードして保存

  3. [OK]をクリックしてファイルを上書きし、エンコードのリストからUTF-8 Without signature[ 検索] -> []をクリックしOKます。

    署名なしのUTF-8

これにより時間を節約できることを願っています。


26

Visual Studio 2010+がBOMをUTF-8ファイルに追加できないようにするFix File Encoding拡張機能を作成しました。


1
そのプラグインをありがとう!ファイルサフィックスに一致する設定で正規表現を使用する以外の方法でファイルタイプを指定する必要があります。また、プラグインはファイルを保存するときにのみ機能し、JavaScriptを作成すると、最初はBOM(3バイトが追加されます)を持っています。
AndersLindén2014年

6

残念ながら、これはcsprojファイルでは機能しません。「高度な保存オプション」はありません。csファイルに対して「署名なしのUTF-8」に設定しても、csprojファイルはBOMで保存されます。VSSを使用している場合でも、プロジェクトファイルについて不満があります。


たぶん、VSSからSVNに移動する必要があります。私はあなたのために変換を行うことができるツールを見たのを覚えています。SVNは無料で、低価格でビジュアルSVNプラグインをビジュアルスタジオに組み込んで、UIから直接SVNを使用できます。
Dave81 2012年

7
「たぶん、VSSからSVNに移動する必要があります。」それはどのような提案ですか?エンタープライズソフトウェアに取り組んでいる私たちのほとんどは、ソース管理システムを選択することはできません。SVNには、SVNにうんざりしているため、gitの作成を促した問題があります。
Shiva

4

UTF-8-「名前を付けて保存」(署名なし)デフォルト-署名なしのUTFのデフォルトを含めるように要求

VS 2017はネイティブでEditorConfigをサポートしているため、.editorconfigコードベースにファイルを追加して設定することをお勧めしますcharset => utf-8。次に、ファイルを保存すると、BOMなしのUTF-8として保存されます。


VS 2017 charsetは.editorconfiggithub.com /editorconfig
visualstudio

2

vs2010 c ++の場合、ソースファイルにマルチバイト文字(中国語など)が含まれていると、BOMなしのUTF8で問題が発生します。

これらの文字はBOMがないと正しく認識されず、コンパイルに失敗します。


BOMのないWindowsでは、ファイルはANSIエンコーディングであると想定されるため、壊れます
phuclv

2

最近、任意のUTF-8エンコードファイルのBOMを追加または削除するこの小さなコマンドラインツールを見つけました:UTF BOM Utils(githubの新しいリンク

少し欠点は、プレーンなC ++ソースコードのみをダウンロードできることです。makefileを作成し(CMakeなどで)、自分でコンパイルする必要があります。このページではバイナリは提供されていません。ただし、ソフトウェア開発者にとっては、これは問題にはなりません。


1

Dave81のソリューションを使用しても、Visual Studio 2015 Communityは、HTMLファイルを保存するたびにファイルをUTF8-BOMに戻していました。

そのhtmlファイルを作成したときに、プロジェクトを右クリックして[追加]を選択し、HTMLファイルを追加しました。

デフォルトでは、Visual Studioは<meta charset="utf-8" />HTMLファイルにタグを含めます。

タグを削除してからDave81のソリューションを適用するだけで、今回は問題が解消されました。

Visual Studioはhtmlファイルを解析し、そのタグを検出すると、元のファイル形式(BOMのないUTF-8)を考慮せずにファイルをUTF8-BOMに変換するようです。

私はDave81のソリューションの直下でコメントを書いたでしょうが、そうするための十分なポイントがありませんでした...


0

以下のためのVisual Studioのコード、次の操作を行います。

  1. 右下から現在のエンコーディングを選択 ここに画像の説明を入力してください
  2. オプションから[ encondingで保存]を選択します ここに画像の説明を入力してください
  3. オプションから、UTF-8を選択します ここに画像の説明を入力してください

VSとVSコードは非常に異なります。この質問はVSについてです
-phuclv

質問はVSのためだったとあなたは私のPROBは、したがって、それをupvoting解決VScodeのために答えたのに
アッシュ

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

このコードはBOMなしでUTF-8でファイルを作成します


問題は、IDEでソースコードファイルを保存する際のエンコードに関するもので、C#コードでファイルを書き込む際のエンコードの設定に関するものではありません
phuclv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.