我正在开发一个基于 Yocto Morty 的嵌入式 Linux 发行版。
我使用 Ubuntu 发行版创建了以下两个文件:
- 佛陀
- 酒吧达特
我已将文件存储到随身碟中,并将随身碟连接到我的嵌入式系统。
我使用 PuTTY 通过串口连接到嵌入式系统并浏览随身碟的内容。文件列表如下:
root@imx6qsabresd:/media/linux_desktop# ls -la
total 8
drwxr-xr-x 2 root root 4096 Mar 17 2017 .
drwxr-xr-x 9 root root 4096 Jan 1 1970 ..
-rwxr-xr-x 1 root root 0 Mar 17 2017 b?r.d?t
-rwxr-xr-x 1 root root 0 Mar 17 2017 f??.d?t
Ubuntu 发行版的区域设置是:
user@user-VirtualBox:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=it_IT.UTF-8
LC_TIME=it_IT.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=it_IT.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=it_IT.UTF-8
LC_NAME=it_IT.UTF-8
LC_ADDRESS=it_IT.UTF-8
LC_TELEPHONE=it_IT.UTF-8
LC_MEASUREMENT=it_IT.UTF-8
LC_IDENTIFICATION=it_IT.UTF-8
LC_ALL=
嵌入式发行版的区域设置是:
root@imx6qsabresd:/media/linux_desktop# locale
LANG=en_US
LC_CTYPE="en_US"
LC_NUMERIC="en_US"
LC_TIME="en_US"
LC_COLLATE="en_US"
LC_MONETARY="en_US"
LC_MESSAGES="en_US"
LC_PAPER="en_US"
LC_NAME="en_US"
LC_ADDRESS="en_US"
LC_TELEPHONE="en_US"
LC_MEASUREMENT="en_US"
LC_IDENTIFICATION="en_US"
LC_ALL=en_US
即使 .UTF-8 后缀未明确显示,我也假设嵌入式系统区域设置是 UTF-8,因为:
root@imx6qsabresd:/media/linux_desktop# locale charmap
UTF-8
看这里:https://stackoverflow.com/a/42797421/5321161了解更多详情。
下面是我当前在嵌入式发行版中安装的区域设置列表:
root@imx6qsabresd:/media/linux_desktop# locale -a
C
de_DE
en_GB
en_GB.ISO-8859-1
en_US
en_US.ISO-8859-1
fr_FR
POSIX
zh_CN
PuTTY 终端模拟器配置为使用 UTF-8 作为远程字符集。
为什么重音字符要用问号代替?
答案1
该问题是由随身碟安装引起的。我通常在不指定任何选项的情况下安装设备。例如
mount /dev/sdb1 /media
结果是:
/dev/sdb1 on /media type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
正如这里所描述的:https://linux.die.net/man/8/mount默认的 iocharset 选项是:iso8859-1。
我尝试安装指定选项 iocharset=utf8 的 pendrive,这解决了这个问题:
mount -o iocharset=utf8 /dev/sdb1 /media
查看控制台中正确显示的以下 UTF-8 字符:
root@imx6qsabresd:/media/win/mix# ls -la
total 28
drwxr-xr-x 7 root root 4096 Mar 13 15:19 .
drwxr-xr-x 9 root root 4096 Mar 16 2017 ..
drwxr-xr-x 2 root root 4096 Mar 13 15:13 Île-de-France
-rwxr-xr-x 1 root root 0 Mar 13 15:13 Île-de-France.txt
drwxr-xr-x 2 root root 4096 Mar 13 15:14 madrileños
-rwxr-xr-x 1 root root 0 Mar 13 15:15 madrileños.txt
drwxr-xr-x 2 root root 4096 Mar 13 14:58 mà_però
-rwxr-xr-x 1 root root 0 Mar 13 14:57 mà_però.txt
drwxr-xr-x 2 root root 4096 Mar 13 15:12 Märkisch-Oderland
-rwxr-xr-x 1 root root 0 Mar 13 15:13 Märkisch-Oderland.txt
drwxr-xr-x 2 root root 4096 Mar 13 15:08 أبو ظبي
-rwxr-xr-x 1 root root 0 Mar 13 15:09 أبو ظبي.txt