SAMBA 语言编码故障参考

原故障如下:
想用mount.smbfs 挂载windows2003里的共享文件夹.使用命令如下:
mount.smbfs  //wh-moniter/d  /u/web/newweb  -o  username=user,password=password,codepage=cp936,iocharset=utf8
但文件名显示总是乱码 ???(无效的unicode)

我的操作系统是RHEL AS 4.0 update4
用local查:
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_M
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=

我用smbclient连接一切正常.

网上查遍了方法,改codepage和iocharset参数(改成什么cp850,gb2312,等等),和修改smb.conf文件加入
    dos charset = CP936
    unix charset = UTF8
    display charset = UTF8
等等.故障依旧.

经多方查找原因,并反复试验,总结经验如下:
1。mount.smbfs命令中的codepage和iocharset参数毫无意义,除非服务端不是中文环境需要手工指定。我们这时不要再被其它网贴误导(我就是因为这个原因荒废了一天的工夫!)
2。修改/etc/sysconfig/i18n文件如下:
LANG="zh_CN.GB18030"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"
SYSFONT="latarcyrheb-sun16"
重启系统后,用mount.smbfs挂载windows共享,终于正常显示中文。但用smbclient连接,显示乱码。
3。修改/etc/samba/smb.conf文件如下:
[global]
    dos charset = CP936
    unix charset = GB18030
    display charset = GB18030
这时只需重启smb服务,用smbclient连接windows共享已正常显示中文。

经验提示:
使用mount.smbfs可以在linux环境中直接使用windows的共享文件夹,如同访问linux下的目录或分区一样。我们打开windows 里的文本文件字体都显示正常,只是文件名在linux下显示乱码,说明挂载是正确的。不正确的应该是GNOME的本地环境的编码与windows服务端编 码不一致引起。因此,这时应该修改本地环境编码格式,统一为gb18030。
这时,我们使用locale命令,可以看到本地环境编码已更改:
[root@**** ~]# locale
LANG=zh_CN.GB18030
LC_CTYPE="zh_CN.GB18030"
LC_NUMERIC="zh_CN.GB18030"
LC_TIME="zh_CN.GB18030"
LC_COLLATE="zh_CN.GB18030"
LC_M
LC_MESSAGES="zh_CN.GB18030"
LC_PAPER="zh_CN.GB18030"
LC_NAME="zh_CN.GB18030"
LC_ADDRESS="zh_CN.GB18030"
LC_TELEPHONE="zh_CN.GB18030"
LC_MEASUREMENT="zh_CN.GB18030"
LC_IDENTIFICATION="zh_CN.GB18030"
LC_ALL=
而使用smbclient连接时,该命令是UNIX环境下指令,这时只用修改smb环境的指令编码与locale一致即可

你可能感兴趣的:(职场,samba,故障,休闲,语言编码)