Windows 无法在 perl 中获取系统区域设置

Unable to fetch system locale in perl on Windows

我是 perl 的新手,我需要在 Windows 上以编程方式在 perl 中获取当前系统区域设置。 我这样做的方式是:

use locale;
use POSIX(locale_h);
$mylocale = setlocale(LC_ALL,"");

尽管如此,我已将语言环境设置为 'en-gb',但我得到的语言环境是 'C'。

这里的wrong/missing是什么?

注意:当我在 C++ 程序中使用 setlocale 方法时,它给我的区域设置为 English_UnitedKingdom。

要以 POSIX 样式的格式获取 Windows 语言环境(与不存在的 POSIX 语言环境相对),您可以 Win32::Localeget_locale.

>perl -e"use Win32::Locale qw( ); CORE::say Win32::Locale::get_locale()"
en_ca

这主要是猜测。 Windows 语言环境实际上是数字。

>perl -e"use Win32::Locale qw( ); CORE::say sprintf '0x%X', Win32::Locale::get_ms_locale()"
0x1009