Под ko_KR.UTF-8
, strftime("%b", localtime(1552997524))
возвращает 20.33.C6D4
. Когда интерпретируется как кодовые точки Unicode, это "& # x2420; 3 & # xC6D4;" («Март», с пробелом).
Под de_DE.UTF-8
, strftime("%b", localtime(1552997524))
возвращает 4D.E4.72
. Когда интерпретируется как кодовые точки Unicode, это "& # x4D; & # xE4; & # x72;" (краткая форма «Мярз», «Март»).
Таким образом, кажется, что возвращается декодированный текст (кодовые точки Unicode), что идеально Осталось только кодировать выходы.
$ LC_ALL=ko_KR.UTF-8 perl -CSD -MPOSIX -e'CORE::say strftime("%b", localtime)'
3월
$ LC_ALL=de_DE.UTF-8 perl -CSD -MPOSIX -e'CORE::say strftime("%b", localtime)'
Mär
В программе (в отличие от однострочного) вместо -CSD
можно использовать что-то вроде следующего:
use open ':std', ':encoding(UTF-8)';