Windowsアプリではビルド設定でUnicode/ANSIが設定可能
VS 2017ではUnicodeはUTF-16、ANSIはshift_jisのことぽい。
Linux系はUTF-8が主流なのでこの辺りはどちらかのシステムで吸収する必要がある。
CStringはビルド環境で変わってしまうため
また意図的に文字コードを意識しなければならないときは
CStringW/CStringAとかstd::wstring/std::stringなどを使う。
変換には
Windows APIのMultiByteToWideChar/WideCharToMultiByteで行う。
昔はコードページIDが定義されてた気がするけど
今はどのヘッダーファイルなのかCP_UTF8/CP_UTF7しかみえない。
https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers
ここに一覧がある。日本語関係で必要なもの
12000
CodePageId | .NETでの名称 | 意味 |
---|---|---|
932 | shift_jis | ANSI/OEM Japanese; Japanese (Shift-JIS) |
12000 | utf-32 | Unicode UTF-32, little endian byte order |
12001 | utf-32BE | Unicode UTF-32, big endian byte order |
20932 | EUC-JP | Japanese (JIS 0208-1990 and 0212-1990) |
51932 | euc-jp | EUC Japanese |
50220 | iso-2022-jp | ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) |
50221 | csISO2022JP | ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) |
50222 | iso-2022-jp | ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) |