質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

Q&A

解決済

1回答

5767閲覧

VScode で新規ファイル (UTF-8 with BOM) がコンパイルエラーになる

Bull

総合スコア986

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

0グッド

0クリップ

投稿2020/07/16 02:04

編集2020/07/16 07:46

Visual Studio Code で新規ファイルのエンコードについてですが、設定でデフォルトのエンコードをBOM付きのUTF-8にしています。

json

1{ 2"files.encoding": "utf8bom", 3}

以前は問題なかったのですが、最新のバージョン (1.47.1) でファイルを新規作成するとファイルの先頭にBOM(U+FEFF) が余分に付き、プログラムソースの場合コンパイルに失敗します。
BOMが余分というのは、BOM(U+FEFF)がファイルの先頭に二つ付いていると言うことです。コンパイラには最初のU+FEFFBOMとして認識されますが、もう一つのU+FEFF は文字 (ZERO WIDTH NO-BREAK SPACE ?) として扱われているようで、GCCでコンパイルすると

text

1error: stray '\357' in program 2error: stray '\273' in program 3error: stray '\277' in program

というエラーがでます。

一度BOM無しのUTF-8で保存してから、再度開き直すと余分なBOMが削除されて正常になるのですが、一手間増えて面倒です。

デフォルトのエンコードをutf8にすれば問題はないのですが、諸般の事情でutf8bomにしています。
utf8bomのままで、問題を回避できる方法があればご教示頂きたいです。

開発環境
Windows10 Home 64bit
Visual Studio Code 1.47.1
gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/07/16 02:06

えっと、作りたいファイルはBOMなしなのに設定をutf8bomにしなければならない事情のほうが気になります。
Bull

2020/07/16 02:23 編集

作りたいファイルは、BOM ありの UTF-8 です。誤解があったらすいません。 BOM ありにしたい主な理由は MSVC が BOM 無しの UTF-8 だと、コンパイル時にオプションが必要なことです。 C/C++ のソースは BOM 付きの UTF-8 に統一しています。 テキストファイルでも BOM 付きでないと、エンコードを正しく認識してくれないソフトを使用しているので、UTF-8 にする場合は BOM 付きの方が都合がいいです。
maisumakun

2020/07/16 02:23

「プログラムソースの場合コンパイルに失敗します。」というのは、MSVCでない別のコンパイラ、ということでしょうか?
Bull

2020/07/16 02:26

コンパイラは gcc ですが、質問がわかりづらかったかもしれませんので、少し修正します。
maisumakun

2020/07/16 02:43

何かしらの拡張機能が干渉している、ということは考えられませんか?
Bull

2020/07/16 02:52

拡張機能は、「C/C++」、「Japanese Language Pack」、「Python」だけです。最近、拡張機能を追加したことはないので、余り関係ないように思います。
guest

回答1

0

自己解決

VScode の更新 (バージョン: 1.47.2) で問題が解決しました。
新規作成で余分なBOM (U+FEFF) が付かなくなりました。

VScode の不具合だったのかも知れませんが、リリースノートには特に書かれてないようでした。(見落としてている可能性も高いですが)

お騒がせしましたが、これで解決と致します。

投稿2020/07/17 01:04

Bull

総合スコア986

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問