今天在配置samba服务的时候碰到一个问题,就是Linux与windows在使用samba服务时会出现字符集的问题。

    我先把配置报一下,samba搭建在64位的centos6.5上,客户机是32位windows7中文简体旗舰版。我们在Linux机器间相互上传下载文件一般是不会出现问题的,当然说的是我目前没碰到过。我们开始实验linux与windows之间的文件传输。

1.打开win下的运行,输入目标IP和samba的user,passwd

wKioL1ZR34qyAYhdAABkJwrGCWs723.png

2.在目录下创建一个新的txt文件,输入中文

wKioL1ZR3_LBQ4RBAAA9ajkJAIo194.png

3.到xshell下查看该文件

wKioL1ZR4Gjz_53nAAAHsQFwAQ4788.png

可以看到在Xshell下,它显示的乱码方块

4.我们在到系统终端上看

wKioL1ZR4O7gRq6OAAAFFmntcp4516.png

    可以看到windows下上传的文件时中文乱码的,查看centos的语言环境

[root@xiayun ~]# echo $LANG

zh_CN.UTF-8

    查看Xshell的语言环境是UTF-8,而windows7中文简体的语言环境是GBK,说到底,就是因为语言环境不一样。

    解决方法:①vim /etc/samba/smb.conf②在[global]下添加dos charset = CP936;display charset = CP936,(CP936是GBK),保存退出。还少一步,xshell上把语言环境也改成GBK,查看下文件,wKioL1ZR48OSEmuMAAAJXyNDwiE356.png,可以看到正常显示了。其实在Xshell下,只要把语言环境改成GBK就可以正常显示了,但是centos的系统语言环境是zh_CN.UTF-8,Xshell查看系统其它中文字体的时候就不正常显示。

    linux与windows之间的文件传输是要注意字符集问题的!