Skip to content
Go back

Windows開発環境におけるUTF-8対応

· Updated:
  • MSVCは(日本語だと)デフォルトでSJISだが、UTF-8にするオプションがある:
    • /source-charset:utf-8を使うと、ソースコードがUTF-8に解釈される
    • /execution-charset:utf-8を使うと、char文字列がUTF-8になる
    • /utf-8を使うと、両方を有効化してくれる
  • Visual Studioが新規作成するソースコードは(日本語だと)SJISになることに注意
    • UTF-8にするには、”名前を付けて保存”で文字コードを指定して保存する
  • コンソール自体にも文字エンコーディング設定があることに注意
    • デフォルトではSJISになっているが、chcpコマンドで変更できる
    • SJISにするにはchcp 932、UTF-8にするにはchcp 65001
  • Win32 APIのマルチバイト版は(日本語だと)デフォルトでSJISだが、UTF-8にもできる:
    • Active Code PageをUTF-8にするマニフェストを設定する
    • CMakeなら、拡張子を.manifestにした以下のファイルをadd_executeの引数に追加する
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
    <assemblyIdentity type="win32" name="..." version="6.0.0.0"/>
    <application>
        <windowsSettings>
            <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
        </windowsSettings>
    </application>
</assembly>
  • Windows自体をUTF-8にすることもできる:
    • コントロールパネルの”地域”から管理タブのシステムロケールの変更で設定できる
    • SJISで作られたソフトウェアが文字化けするので通常は行わない方がいい