Windows環境でPHPのsetlocale関数を使用する際の注意

Windows環境でPHPのsetlocale関数を使用する際には、指定する引数の記法に注意する必要がある。

以下のような記法では認識されない場合がある。

setlocale(LC_ALL, "ja_JP.UTF-8");

以下のような記法では正しく認識される。

setlocale(LC_ALL, ".UTF8");

または

setlocale(LC_ALL, ".UTF-8");

正しく認識されなかった場合、setlocale関数はfalseを返すため、これを使用して判定もできる。

if (!setlocale(LC_ALL, "ja_JP.UTF-8")) {
    error_log("Locale not found");
    exit(1);
}

参考1(https://hacka.work/blog/win-php-utf8/)
参考2(https://www.softel.co.jp/blogs/tech/archives/2331)
参考3(https://hnw.hatenablog.com/entry/20120501)
関係あるかも(https://so-zou.jp/software/tech/windows-app/win32/internationalization/)