Skip to content

5.38 outputs locale errors with UTF-8 LANG environment variable set #150

@LordAro

Description

@LordAro

Any execution of perl 5.38 with a UTF-8 language set results in

~/Downloads/strawberry-perl-5.38.0.1-64bit-portable/perl/bin/perl -v | head -2
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = (unset),
        (possibly more locale environment variables)
        LANG = "en_GB.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the system default locale ("English_United Kingdom.1252").

This is perl 5, version 38, subversion 0 (v5.38.0) built for MSWin32-x64-multi-thread

it's not quite clear what languages are supported and installed on my system, and why this is only an issue now.

There's a few locale related things in 5.38, which it appears to be related to:

https://perldoc.perl.org/perl5380delta#Locale-category-LC_NAME-now-supported-on-participating-platforms
https://perldoc.perl.org/perl5380delta#Changes-to-%22thread-safe%22-locales

though I've no idea which.

Codepage is 850, but there's no difference if I set it to 65001 either.

Happens in both powershell and msys, and with either of LANG & LC_NAME - which would definitely suggest that it's perl at fault rather than MSYS / powershell.

There is a workaround, but it's hacky:

$ PERL_BADLANG=0 ~/Downloads/strawberry-perl-5.38.0.1-64bit-portable/perl/bin/perl -v | head -2

This is perl 5, version 38, subversion 0 (v5.38.0) built for MSWin32-x64-multi-thread

No issues with 5.32 or 5.36.

This feels related to, but distinct from, #119 . I have tried 5.38.0.2, it had no effect.

Metadata

Metadata

Assignees

Labels

UCRTNeeds a UCRT compilerperl coreDue to, or perhaps due to, a perl core change

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions