现在的位置: 首页 > 综合 > 正文

开发板终端显示中文文件名(by liukun321咕唧咕唧)

2013年10月14日 ⁄ 综合 ⁄ 共 2059字 ⁄ 字号 评论关闭

以前做GSM中文短信时就想彻底解决字符编码转换的问题,结果一直拖到现在。这两天在我实现开发板终端显示中文文件名时,又遇到了字符编码转换,也碰到了很多问题,由于时间紧迫,我分条列出(比较杂乱,我是想到哪写到哪,“时间紧”),就不在拘泥于格式了。希望对碰到同样问题的朋友有些许帮助。

(1)安装convmv工具可 改变文件名的编码格式,iconv 是改变文件内容编码的工具。convmv的具体用法: convmv -f 源编码 -t 新编码 [选项] 文件名
(2)将cp936,编进内核。

luther@gliethttp:/vobs/works/linux-2.6.30.4$ make menuconfig
File systems  --->
-*- Native language support  --->
<M>   Simplified Chinese charset (CP936, GB2312)

(3)若系统已安装了,中文编码,则需要做以下配置

编辑/etc/sysconfig下面的i18n文件(注意备份一下该文件)。
改为

LANG="zh_CN.GB2312"
LANGUAGE="zh_CN.GB2312:zh:CN"
SUPPORTED="zh_HK.UTF-8:zh_HK:zh_CN:zh:z"

(4)locale -a会显示 所有与locale有关的环境变量,在开发板/etc/profile文件下添加环境变量 声明

export LC_ALL=字符编码 reboot 就会将locale所有的环境变量改成LC_ALL的值。

(5)挂载U盘时可以用

# mount -t vfat -o iocharset=cp936
/dev/mtdblock3 /mnt/  U盘目录下就可以显示中文文件名了

(6)

LC_ALL 环境变量在/etc/profile 中设置export LC_ALL=

上面错误的原因是zh_CN.GB2312这个语言配置文件包 应该放在开发板/usr/lib/locale目录下,而非/lib目录下   locale可执行文件放在了开发板的bin目录下

1、语言包大多在交叉链 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/locale/目录下

2、sudo cp -r  /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/share/i18n/ /nfsroot/rootfs/usr/share/(目录下的东西作用未知)

3、locale 可执行文件所在目录(ARMV4架构) sudo cp -r  /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/bin

windows下建立的中文名编码格式为国标2312

 locale-archive 在/usr/lib/locale/ locale-archive  

(7)开发板/usr/lib/locale/下面的文件的, 比如命令:

localedef -c -v -f GB2312 -i zh_CN zh_CN.gb2312 --prefix=/usr
它就会/usr/lib/locale/下面生成 zh_CN.gb2312 ,为了什么兼容性, 要:
mv zh_CN.gb2312 zh_CN.GB2312
(8)convmv 加一个参数 --nosmart 另外, convmv 默认只是测试不实际改文件名
要实际改文件名要再加参数 --notest

(9)与locale有关的文件在 ARM-LINUX-GCC中的位置

1、locale可执行文件在 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/bin 目录下这个目录下的可执行文件,都是一些很关键的工具例如还有 ldd iconv localedef等很给力的工具。这些工具是编译glibc时生成的,这个需要在编译glibc前配置确定是否生成。另外

 locale-archive 在/usr/lib/locale/ locale-archive  也是在glibc编译后生成的。

2、语言包在交叉链 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/locale/目录下 需要哪个就可以往根文件系统/usr/lib/locale/ 目录下CP

cp完后,并配置好环境变量LC_ALL,最后用locale -a更新整个配置。

3、/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/share/i18n/

有 charmaps 和 locales 文件 需要放到开发板/usr/share/i18n 目录下 这两个目录在执行localedef -c -v -f GB2312 -i zh_CN zh_CN.gb2312 --prefix=/usr 
 时将发挥作用。

抱歉!评论已关闭.