22
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studio 2019のデフォルトエンコードをUTF-8にする方法

Posted at

注意点

  • Visual Studio 2019をC:\Program Files (x86)等、ファイル書き換えに管理者権限が必要な場所にインストールしている場合、管理者権限が必要になります
  • おそらく他のVisual Studioのエディションでもできると思いますが、Visual Studio 2019以外では検証してないため、それ以外では保証ができません
  • 今時そんなのないと思いますが、BOM付きUTF-8のファイルを作成できるテキストエディターがない人は一旦ブラウザバックしてインストールしてきて下さい。ちなみにWindows標準のメモ帳は可能です

概要

最近C++の開発をしていて、いちいちファイルのエンコードを変更して保存ってやらないといけないのがあんまりにも煩わしいと感じていました。そもそも@yumetodoからVS2019はソースコードファイルはデフォルトでBOM付きUTF-8って聞いてたからやっとあの煩わしい作業から解放されると思ってたのに作られるファイルはShift-JIS…。なーにがBOM付きUTF-8のファイルが作られるだよ!
という怒りから方法がないか調べていた時に辿りついた記事がKTA552さんのこの記事でした。
ただ、実際読んでみると、まあ要するにこの画面にBOM付きUTF-8ファイルを作成するテンプレートを増やすやり方なんですね。
image.png
でも私は思いました。「テンプレートを作ったら負けじゃないか?」と
そもそもこの方法で作ったとして、間違っていつものを選んだら結局煩わしい作業をしないといけないんですよ
じゃあいっそこのテンプレートのソースファイルとヘッダーファイルそのものを書き換えてしまえばいいんじゃないかと考え、やりました

手順

やることは至ってシンプルで、テンプレートファイルがShift-JISなのでそれをBOM付きUTF-8で保存してやればいいんです
さてそのファイルはどこかというと…

ここです!
image.png

私の環境ではVisual Studio 2019はC:\Program Files (x86)\Microsoft Visual Studio 16.0にインストールされてるので、パスはC:\Program Files (x86)\Microsoft Visual Studio 16.0\Common7\IDE\VC\vcprojectitemsになりますが、これは自分のVSのインストールパスに読み替えて下さい。
さて、勘のいいそこのあなたはもう分かってると思いますが、編集するファイルは

  • newc++file.cpp
  • hfile.h
    の2つです。私はサクラエディタでこの2つのファイルをBOM付きUTF-8に書き換えました
    ただ、インストール先の親ディレクトリがC:\Program Files (x86)なので編集には管理者権限が必要でした
    そしてこのファイルを書き換える時に気を付けないといけないのが「ファイル名を変えてはいけない」ということです
    変えてしまうと最悪ファイル作成ができなくなります。
    VSの更新の影響受けるのか?そんなもんは知らん。まだこの作業してから更新してないし

とにかく、この作業を行うことで、C++のソースファイルとヘッダーファイルはデフォルトで
image.png
この通りBOM付きUTF-8になります。ちなみに私はさらに行の終わりもCR+LFにしておきました。
まあそこをどうするかは作業するあなたが決めて下さい。私は知りません。

22
18
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?