LoginSignup
1
1

More than 3 years have passed since last update.

[VisualStudio2017から] C++プロジェクトのソースコードをUTF-8で保存する方法

Last updated at Posted at 2018-06-21

VisualStudio2017から(もしくは何かの拍子に?)、C++プロジェクトを新規作成すると、そのソースコードが UTF-16 で保存されるようになっていた。
UTF-16だとSourceTreeやBitBucketなどでソースコードが正しく表示されないという問題があるため、何とかしたいと色々探し回っていたら以下の方法を発見した。

この方法だと、簡単にかつ確実に UTF-8 で保存されるようになる。

方法

プロジェクトフォルダー(もしくはそれより上位のフォルダー)に .editorconfig というファイルを置く。
内容は以下の通り。

.editorconfig
root = true

[*.{c,h,cpp,cs}]
end_of_line = crlf
charset = utf-8-bom
trim_trailing_whitespace = false
insert_final_newline = false

[*.rc]

[*.{md,txt}]

[*]

注意

[*] にutf-8設定を記述してしまうと、リソースファイル(*.rc)もUTF-8化されてしまうため(Editorで直接編集した場合のみ?)、ビルドすら通らなくなってしまう。
そういったトラブルを避けるために、utf-8化するのは .cpp/h に限定している。

参考

.editorconfig の書き方 - Qiita

補足

VS2019ではボタン1つで .editorconfig を生成できるように なるっぽい なっている。(2019/08/06確認)
https://twitter.com/okazuki/status/1073568778900824064?ref_src=twsrc%5Etfw

おまけ: プロジェクトテンプレート化

Visual Studio 2017でプロジェクトテンプレート作成 - 何でもプログラミング
プロジェクトの新規作成を頻繁に行うならテンプレート化しておいたほうがいいかも。
但し、VS2017のテンプレートのエクスポートでは正しく?エクスポートされないようなので、MyTemplate.vstemplate ファイルを手作業で書き換える必要がある。

MyTemplate.vstemplateのサンプル
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
  <TemplateData>
    <Name>MyConsoleApplication</Name>
    <Description>UTF8</Description>
    <ProjectType>VC</ProjectType>
    <ProjectSubType>
    </ProjectSubType>
    <SortOrder>1000</SortOrder>
    <CreateNewFolder>true</CreateNewFolder>
    <DefaultName>MyConsoleApplication</DefaultName>
    <ProvideDefaultName>true</ProvideDefaultName>
    <LocationField>Enabled</LocationField>
    <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
    <Icon>__TemplateIcon.ico</Icon>
  </TemplateData>
  <TemplateContent>
    <Project TargetFileName="ConsoleApplication2.vcxproj" File="ConsoleApplication2.vcxproj" ReplaceParameters="true">
      <ProjectItem ReplaceParameters="false" TargetFileName="$projectname$.vcxproj.filters">ConsoleApplication2.vcxproj.filters</ProjectItem>
      <ProjectItem ReplaceParameters="false" TargetFileName="$projectname$.cpp">ConsoleApplication2.cpp</ProjectItem>
      <ProjectItem ReplaceParameters="false" TargetFileName="stdafx.cpp">stdafx.cpp</ProjectItem>
      <ProjectItem ReplaceParameters="false" TargetFileName="stdafx.h">stdafx.h</ProjectItem>
      <ProjectItem ReplaceParameters="false" TargetFileName="targetver.h">targetver.h</ProjectItem>
      <ProjectItem ReplaceParameters="false" TargetFileName=".editorconfig">.editorconfig</ProjectItem>
    </Project>
  </TemplateContent>
</VSTemplate>

※.cpp/h が全く入っていなかったので追記。さらに、zipファイル内に該当ファイルを追加。

1
1
0

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
1
1