答案1
export LC_ALL=ru_RU.UTF-8
说明:首先,确保您安装了正确的区域设置:
locale -a | egrep -i 'ru.*utf'
ru_RU.UTF-8
然后您可以尝试设置正确的区域设置。我的第一次尝试是:
export LC_ALL=ru_RU.UTF-8
你可以做一个简单的测试:
( date; export LC_ALL=ru_RU.UTF-8 ; date +%c)
Fri Mar 8 08:08:50 -03 2019
пятница, 8 марта 2019 г. 08:08:50
然后你可以做一个稍微(?)更复杂的测试:
( date; \
export LC_ALL=ru_RU.UTF-8 ; \
d=$(date +%c | sed 's/ /_/g'); \
mkdir /tmp/test; \
echo $d > /tmp/test/$d.txt; \
echo "with right locale:"; \
ls -ltra /tmp/test ; \
echo "with 'C' locale:"; \
LC_ALL=C ls -ltra /tmp/test )
Fri Mar 8 08:14:19 -03 2019
with desired locale:
total 12
-rw-r--r-- 1 vfalcao wheel 48 мар 8 08:13 пятница,__8_марта_2019_г._08:13:21.txt
-rw-r--r-- 1 vfalcao wheel 48 мар 8 08:13 пятница,__8_марта_2019_г._08:13:38.txt
drwxrwxrwt 19 root wheel 608 мар 8 08:13 ..
drwxr-xr-x 5 vfalcao wheel 160 мар 8 08:14 .
-rw-r--r-- 1 vfalcao wheel 48 мар 8 08:14 пятница,__8_марта_2019_г._08:14:19.txt
with 'C' locale:
total 12
-rw-r--r-- 1 vfalcao wheel 48 Mar 8 08:13 ??????????????,__8_??????????_2019_??._08:13:21.txt
-rw-r--r-- 1 vfalcao wheel 48 Mar 8 08:13 ??????????????,__8_??????????_2019_??._08:13:38.txt
drwxrwxrwt 19 root wheel 608 Mar 8 08:13 ..
drwxr-xr-x 5 vfalcao wheel 160 Mar 8 08:14 .
-rw-r--r-- 1 vfalcao wheel 48 Mar 8 08:14 ??????????????,__8_??????????_2019_??._08:14:19.txt
答案2
您需要将区域设置设置为可以处理 UTF-8 字符的区域设置。语言C
环境不能(不会)这样做。
一种选择是删除LC_*
强制区域设置为 的环境变量C
,但最好首先解决根本问题并正确设置它们。
unset $(set | sed -n '/^LC_/s/=.*//p')