问题

最近配置一台RH linux 9samba 共享,在支持中文的windows xp 系统上访问,samba 共享的中文目录和文件名乱码,显示为问号,但打开文件,里面的中文显示正常。

查看语言环境如下:

# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"

查看分区环境如下:

$ mount
...
/dev/hdc5 on /mnt/win type vfat (rw)
...

解决

对于类似问题,Linux下的中文显示和支持常见问题解答中有比较详细的解决方法。

首先,使用正确的代码页和字符集mount 带有中文的分区,编辑文件/etc/fstab ,修改为:

/dev/hdc5 /mnt/data1 vfat defaults,codepage=936,iocharset=cp936 0 0

这个修改在下次启动系统时生效,修改当前的mount 配置:

$ umount /dev/hdc5
$ mount -t vfat -o codepage=936,iocharset=cp936 /dev/hdc5 /mnt/win
$ mount
...
/dev/hdc5 on /mnt/data1 type vfat (rw,codepage=936,iocharset=cp936)
...

接下来,编辑samba 配置文件/etc/samba/smb.conf ,在[global] 中加入如下2 行(注意顺序):

client code page = 936
character set = 936

如果是繁体中文系统,使用950 替换936。修改完smb.conf 可使用如下命令check 配置文件是否包含语法错误:

$ testparm
unrecognized character set 936

这个错误信息会出现,但这句的确有用。重启动samba 服务使修改的配置文件生效:

$ service smb restart

通过Windows 再访问samba 共享,中文目录和文件名已经可以正常显示。

另外,有很多资料介绍在smb.conf 中进行如下配置来解决此问题(比如:http://www.blog.edu.cn/user1/2065/archives/2005/212233.shtml):

 

display charset = cp936
unix charset = cp936
dos charset = cp936

上面的参数只有在较新的samba 版本中才支持,随RHL 9 提供的版本2.2.7a不支持以上参数:

$ smbd -V
Version 2.2.7a
$ man smb.conf

修改smb.conf 后使用testparm 检查一遍是个不错的主意。

参考资源

Post a comment

mail.png


相似文章|Related Entries

最近更新|Recent Entries

不定期更新|Handy Entries

相似标签|Related Tags

Linux
Apache (3)
awstats (4)
Cluster (1)
eMule (1)
ext3 (1)
Gentoo (1)
hdd (7)
mount (1)
NAT (1)
PowerDesigner (4)
Redhat (1)
Samba (2)
Study notes (9)
T43 (0)
Thinkpad (9)
Ultra Slim (4)
WAS (1)
Websphere (1)
乱码 (1)
学习笔记 (14)
虚拟主机 (1)
部署 (1)
集群 (1)
Samba
Linux (16)
乱码 (1)
乱码
Linux (16)
Samba (2)

分类栏目|Categories

按月归档|By Month

2008
07
05
04
03
02
01
2007
12
10
07
06
05
04
03
02
01
2006
12
11
10
09
08
07
06
05
04
03
02
01
2005
11
10
09
08
07
04
03
2004
12
11
10
09
08
07
06
05
04
03
02
01
2003
12
10
09
08
06
2002
09
08
04
03
02
2001
12
09
07
06
05

站内链接|Site Links

Powered by
Movable Type 3.34