Win32API
Win32API に関するメモ
iniファイル
Windows 2000(NT3?) ごろに Unicode 対応版WritePrivateProfileStringW()
等が実装されたと思われます。
iniファイルの文字コードやUnicode/ANSIを混在して使用していた場合のド
キュメントは見当たらないため動作をまとめました。最近のWindows(少なく
ともWindows 10,11)では、Unicodeに対応するため次のような動作となって
います。
- ファイルの先頭にUTF-16LE BOM(0xff 0xfe)がついているとき、iniファイルはUnicodeのファイルとして扱われます。
- ANSI/Unicode APIでUnicode/非Unicode iniファイルを読み書きしたとき自動でACP/Unicode変換が行わます(9x系では行われません)。
- Unicode iniファイルのとき、Unicodeとして読み書きします。
- Unicode iniファイルではないとき、日本語環境ではShift_JIS(ACP)として読み書きします。
- このためiniファイルの文字コードによらず透過的にAPIを利用できます。
- 非Unicode iniファイルにShift_JISで表現できないUnicode文字を書き込むと"?"に置換されて書き込まれます。
- Unicode API で最初にファイルを作成するとき、Unicode iniファイルになりません。
- BOMだけの空ファイルを作ってから書き込むとUnicode iniファイルとして扱えます。