【C#】iniファイルの読み込みで文字化けしてしまうときの対処法【Visual Studio 2022】
【Visual Studio 2022】iniファイルの読み込みで日本語や漢字が文字化けしてしまうときの対処法(文字コード)

iniファイルをC#から普通にGetPrivateProfileString()で読み込もうとすると、文字化けしてしまうことがあります。これに対処するには、iniファイルに保存されている文字コードの情報を変更する必要があります。

.INIファイルをWindows11のメモ帳アプリで編集し保存するときに、デフォルトでは「UTF-8」が文字コードとして指定されますが、それを保存するときに「UTF-16 LE」として保存します。
変更方法は、Windows11のメモ帳アプリで.INIファイルを開き、左上のファイルから名前をつけて保存を選択し、この画面でエンコードを「UTF-16 LE」に設定変更してから保存します。
(上書き保存して大丈夫です)

これでiniファイルの内容が日本語でも正常に内容が読み取れるようになります。

INIファイル読み取りのソースコード例(Form1.cs)
using System.Runtime.InteropServices;
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll", EntryPoint = "GetPrivateProfileStringW", CharSet = CharSet.Unicode, SetLastError = true)]
static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName);public Form1()
{
InitializeComponent();
}private void button1_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder(256);
GetPrivateProfileString("Data", "Name", "none", sb, Convert.ToUInt32(sb.Capacity), ".\\kokyaku.ini");MessageBox.Show(sb.ToString());
}
}
}