Chinaunix首页 | 论坛 | 博客
  • 博客访问: 223159
  • 博文数量: 68
  • 博客积分: 3120
  • 博客等级: 中校
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-08 09:53
文章分类
文章存档

2012年(29)

2011年(3)

2010年(18)

2009年(18)

我的朋友

分类: LINUX

2010-05-16 13:10:00

问题描述:
      因工作关系,我需要架设一个影视服务器和影视网站。操作系统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) |
给主人留下些什么吧!~~