问题描述:
因工作关系,我需要架设一个影视服务器和影视网站。操作系统是CentOS5.4,Web服务器Apache2.2.15,PHP5.2.16,MySQL5.5.3m2。
影视服务器Helix-Server11,影视网站VODCMS6.04-
GBK。
远程登录:SecureCRT6.2
在Linux环境下,我设置系统locale为
zh_CN.GBK,SecureCRT模拟器采用新宋体-GB2312,这种配置下,我可以在ext3分区正确的创建中文的影视目录,而且网站运行时正常的。但是当我挂载
fat32分区后,使用的配置参数mount -t vfat /dev/sdb1 /movie -o
codepage=936,iocharset=cp936,umask=000 0
0,这时候查看fat32分区,显示是乱码,此时也无法在fat32分区下创建中文的文件。当然,影视网站也找不到正确的文件。
如果让fat32分区的内容显示正常,我必须更改系统locale
为zh_CN.UTF8,SecureCRT采用新宋体-UTF8才行,这时候虽然fat32分区的内容显示正确,也可以创建中文的文件名的文件和目录,
但是网站由于采用的是GBK版本的,所以不能正常工作。
目前的矛盾就是,影视网站只有GBK版本,操作系统的locale必须为zh_CN.GBK,但
是又需要读取Windows分区下的文件(需要设置为
zh_CN.UTF8)
解决方法:
仔细查看mount的man手册,发现fat(包括
msdos,fat32,ntfs)的选项说明,发现还有个参数uni_xlate负责进行编码转换的开关,重新对/etc/fstab文件编辑:
/dev/sdb2 /movie vfat
defaults,uni_xlate=1,iocharset=cp936,codepage=936,umask=000 0 0
然后,保证/etc/sysconfig/i18n文件中的LANG=zh_CN.GBK,就可以解决上述问题了。
当然,在SecureCRT正常显示中文,在上述设定的情况下,必须保证仿真终端的字体能够支持中文,同时编码需要采用gbk或gb2312或
gb18030。一般选择新宋体,同时应指定字符集为CHINESE_gb2312,这样在仿真终端才会正常的显示中文。
如果需要挂载NTFS的分区,系统需要安装fuse和ntfs-3g两个包,然后可在/etc/fstab文件添加:
/dev/sdb2 /movie ntfs-3g defaults,locale=zh_CN.GBK,umask=000 0 0
总结:
影响SecureCRT正常显示中文的因素有:系统locale的设定,文件的编码方式,SecureCRT终端的字体和字符集的选择。三者应该保持一
致,我们才会在终端正常的显示中文。
阅读(1366) | 评论(0) | 转发(0) |