Gry*_*ium 5 i18n unicode locale yocto
我正在开发一个基于 Yocto Morty 的嵌入式 Linux 发行版。
\n\n我使用 Ubuntu 发行版创建了以下两个文件:
\n\n我已将文件存储到随身碟中,并将随身碟连接到我的嵌入式系统。
\n\n我使用 PuTTY 通过串口连接到嵌入式系统并浏览随身碟的内容。文件列表如下:
\n\nroot@imx6qsabresd:/media/linux_desktop# ls -la\ntotal 8\ndrwxr-xr-x 2 root root 4096 Mar 17 2017 .\ndrwxr-xr-x 9 root root 4096 Jan 1 1970 ..\n-rwxr-xr-x 1 root root 0 Mar 17 2017 b?r.d?t\n-rwxr-xr-x 1 root root 0 Mar 17 2017 f??.d?t\n
Run Code Online (Sandbox Code Playgroud)\n\nUbuntu 发行版的区域设置是:
\n\nuser@user-VirtualBox:~$ locale\nLANG=en_US.UTF-8\nLANGUAGE=en_US\nLC_CTYPE="en_US.UTF-8"\nLC_NUMERIC=it_IT.UTF-8\nLC_TIME=it_IT.UTF-8\nLC_COLLATE="en_US.UTF-8"\nLC_MONETARY=it_IT.UTF-8\nLC_MESSAGES="en_US.UTF-8"\nLC_PAPER=it_IT.UTF-8\nLC_NAME=it_IT.UTF-8\nLC_ADDRESS=it_IT.UTF-8\nLC_TELEPHONE=it_IT.UTF-8\nLC_MEASUREMENT=it_IT.UTF-8\nLC_IDENTIFICATION=it_IT.UTF-8\nLC_ALL=\n
Run Code Online (Sandbox Code Playgroud)\n\n嵌入式发行版的区域设置是:
\n\nroot@imx6qsabresd:/media/linux_desktop# locale\nLANG=en_US\nLC_CTYPE="en_US"\nLC_NUMERIC="en_US"\nLC_TIME="en_US"\nLC_COLLATE="en_US"\nLC_MONETARY="en_US"\nLC_MESSAGES="en_US"\nLC_PAPER="en_US"\nLC_NAME="en_US"\nLC_ADDRESS="en_US"\nLC_TELEPHONE="en_US"\nLC_MEASUREMENT="en_US"\nLC_IDENTIFICATION="en_US"\nLC_ALL=en_US\n
Run Code Online (Sandbox Code Playgroud)\n\n即使 .UTF-8 后缀未明确显示,我也假设嵌入式系统区域设置是 UTF-8,因为:
\n\nroot@imx6qsabresd:/media/linux_desktop# locale charmap\nUTF-8\n
Run Code Online (Sandbox Code Playgroud)\n\n请参阅此处: https: //stackoverflow.com/a/42797421/5321161了解更多详细信息。
\n\n下面是我当前在嵌入式发行版中安装的区域设置列表:
\n\nroot@imx6qsabresd:/media/linux_desktop# locale -a\nC\nde_DE\nen_GB\nen_GB.ISO-8859-1\nen_US\nen_US.ISO-8859-1\nfr_FR\nPOSIX\nzh_CN\n
Run Code Online (Sandbox Code Playgroud)\n\nPuTTY 终端模拟器配置为使用 UTF-8 作为远程字符集。
\n\n为什么重音字符要用问号代替?
\n该问题是由随身碟安装引起的。我通常在不指定任何选项的情况下安装设备。例如
\n\nmount /dev/sdb1 /media\n
Run Code Online (Sandbox Code Playgroud)\n\n结果是:
\n\n/dev/sdb1 on /media type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)\n
Run Code Online (Sandbox Code Playgroud)\n\n如此处所述: https: //linux.die.net/man/8/mount默认的 iocharset 选项是:iso8859-1。
\n\n我尝试安装指定选项 iocharset=utf8 的笔式驱动器,这解决了问题:
\n\nmount -o iocharset=utf8 /dev/sdb1 /media\n
Run Code Online (Sandbox Code Playgroud)\n\n查看控制台中正确显示的以下 UTF-8 字符:
\n\nroot@imx6qsabresd:/media/win/mix# ls -la\ntotal 28\ndrwxr-xr-x 7 root root 4096 Mar 13 15:19 .\ndrwxr-xr-x 9 root root 4096 Mar 16 2017 ..\ndrwxr-xr-x 2 root root 4096 Mar 13 15:13 \xc3\x8ele-de-France\n-rwxr-xr-x 1 root root 0 Mar 13 15:13 \xc3\x8ele-de-France.txt\ndrwxr-xr-x 2 root root 4096 Mar 13 15:14 madrile\xc3\xb1os\n-rwxr-xr-x 1 root root 0 Mar 13 15:15 madrile\xc3\xb1os.txt\ndrwxr-xr-x 2 root root 4096 Mar 13 14:58 m\xc3\xa0_per\xc3\xb2\n-rwxr-xr-x 1 root root 0 Mar 13 14:57 m\xc3\xa0_per\xc3\xb2.txt\ndrwxr-xr-x 2 root root 4096 Mar 13 15:12 M\xc3\xa4rkisch-Oderland\n-rwxr-xr-x 1 root root 0 Mar 13 15:13 M\xc3\xa4rkisch-Oderland.txt\ndrwxr-xr-x 2 root root 4096 Mar 13 15:08 \xd8\xa3\xd8\xa8\xd9\x88 \xd8\xb8\xd8\xa8\xd9\x8a\n-rwxr-xr-x 1 root root 0 Mar 13 15:09 \xd8\xa3\xd8\xa8\xd9\x88 \xd8\xb8\xd8\xa8\xd9\x8a.txt\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
4353 次 |
最近记录: |