Samba中文乱码解决方法

Samba中文乱码解决方法

 

sudo vim   /etc/samba/smb.conf
dos charset = UTF-8
unix charset = utf-8
display charset = utf-8

sudo /etc/init.d/samba  restart 

 

附录:

Samba和FTP中文乱码的解决方法

2016年09月16日 17:13:50 lcy_ltpsr 阅读数 4287

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lcy4599/article/details/52556606

Samba和FTP中文乱码的解决方法

 

1、参考资料

 

http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
http://blog.csdn.net/zzjjian333/article/details/8203443
http://linux.die.net/man/3/setlocale


2、中文乱码的原因
(1) 服务器或PC操作系统的编码格式与某服务的编码格式不匹配

示例[1]: 中国大陆Windows操作系统的编码格式为GBK,而Samba/FTP服务的编码格式为UTF-8;如果U盘插到

Windows操作系统上,创建中文名称的文件或文件夹;再将该U盘插到Linux服务器上;然后通过Samba/FTP访问该U盘,则会出现中文乱码。

3、服务器或PC操作系统的编码格式
(1) Linux服务器的编码格式: Debian OS 

a. 查看当前Debian系统的编码格式:

 

# locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

b. 以上是Debian默认的编码格式: C 或 POSIX

b1. 参考资料 http://linux.die.net/man/3/setlocale 官方的说明: The locale "C""" or "POSIX""" is a portable locale; its LC_CTYPE part corresponds to the 7-bit ASCII character set.

b2. C 或 POSIX 的LC_CTYPE是ASCII的编码格式。

c. 修改Debian的编码格式: 

c1. export 修改LC_ALL,该方式只能在当前的终端生效

 

<span style="font-size:18px;">debian:~# export LC_ALL=zh_CN.GBK
debian:~# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=zh_CN.GBK</span>

c2. 手动增加locale,只要把新的locale增加到/etc/locale.gen文件中,再运行locale-gen命令即可生成新的locale。再通过设置上面介绍的LC_*变量就可设置系统的locale了。下面是一个locale.gen文件的样例。

 

# This file lists locales that you wish to have built. You can find a list
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
# this file, you need to rerun locale-gen.
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8

c3. 如果要使得系统启动就设置成所需要的编码格式,需要将export的设置写入到/etc/profile文件中。 

(2) Windows 操作系统的编码格式: WindowsXP/Windows7+

a. 查看当前Windows系统的编码格式

# 在 DOS 命令行环境下输入如下命令,即可查看当前Windows系统的编码格式

 

> chcp 
活动的代码页: 936

b. 以上显示结果表示Windows系统编码格式为CP936,即GBK。参考资料 http://blog.csdn.net/zzjjian333/article/details/8203443 有详细的说明。

c. Windows操作系统的编码格式不建议修改,如果修改,很可能造成用户原来硬盘中的中文出现乱码。

4、Samba的编码格式
(1) Samba编码格式的设定:

a. Samba的主配置文件/etc/samba/smb.conf如下选项用于设定编码格式:

 

dos charset = UTF-8
unix charset = utf-8
display charset = utf-8

b. 当前Samba的编码格式为UTF-8

c. 测试确认当前Samba访问U盘会出现中文乱码: 详见下图1所示

图1 Samba访问USB中文乱码

(2) 设定合适的编码格式,解决中文乱码

a. 产生系统支持的字符集: zh_CN.GB18030 zh_CN GB2312 zh_CN.UTF-8 UTF-8 zh_TW BIG5  zh_TW.UTF-8 UTF-8 

a1. 修改文件:  /etc/locale.gen 

a2. 运行命令: locale-gen      # 产生系统支持的字符集 

b. 修改samba的主配置文件/etc/samba/smb.conf   [ 设置合适的编码格式 ]

 

dos charset = CP936
unix charset = GB18030
display charset = GB18030

c. GB18030 字符集兼容 GBK,且收录的中文字符更多,推荐使用GB18030

d. 重启 Samba 服务: service samba restart 

e. 测试确认当前Samba访问U盘会不会出现中文乱码: 详见下图2所示

图2 Samba访问USB中文正常

5、FTP的编码格式
(1) FTP编码格式的设定: proftp 

a. proftp的主配置文件/etc/proftpd/proftpd.conf如下选项用于设定编码格式:

 

UseEncoding UTF-8 UTF-8
# 第一个UTF-8设置服务器端的编码格式;
# 第二个UTF-8设置FTP客户端的编码格式

b. 当前proftp的编码格式为UTF-8

c. 参照Samba的修改方式,将/etc/proftpd/proftpd.conf如下选项修改为:

 

UseEncoding UTF-8 GB18030
或  UseEncoding UTF-8 CP936

d. 重启proftp后,测试确认当前proftp访问U盘不会出现中文乱码: 详见下图3所示

图3 FTP访问USB中文正常

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一. Samba 简介 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的; 大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器; 我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。 二. Samba的几个套件,安装及简单配置 sambasamba-client, samba-common 一句 sudo apt-get install samba samba-client 就能全部装上 启动samba也很简单: sudo /etc/init.d/samba start 设置samba的密码, 可以先添加samba用户, 必须是系统用户。 smbpasswd -a yourname 三. 互访 1)windows访问ubuntu windows访问ubuntu很简单, 先在ubuntu上设置共享目录即可, 鼠标右键点目录,选择sharing options, 够选share this folder,需要的话也可以够选下面的allow write 这时在windows的网络邻居中的网络中查找就能找到共享目录了,通过//host也行 2)ubuntu访问windows 第一种:在ubuntu的网络中直接浏览访问 位置->网络,点击界面中windows网络->workgroup,在workgroup组中就可以看到windows计算机名,双击会弹出输入用户名和密码的对话框,将我们上面设置smb的用户名和密码输入就可以进行访问。 第二种:用ubuntu 系统自带的连接到服务器功能访问 位置->连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷,里面就是windows计算机的共享目录了。 同样在访问的时候要输入smb的用户名和密码。 第三种:用mount’挂载windows的共享目录到本地磁盘 首先要在ubuntu系统中建立一个挂载点,在这里我们建立的挂在点为 /mnt/wind 同样在保证网络连接正常,且windows中有共享目录的前提下,进行一下操作 以windows的ip为192.168.0.1,共享文件夹为share为例 命令如下: mount -t smbfs –o username=wangyh,password=123456 //192.168.0.1/share /mnt/wind 有是这样在访问的时候会出现中文乱码的问题,这样我们可以按下面命令来执行,可以解决这个问题 mount -o smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind 注解:usename和password都为smb的用户和密码,如果要详细了解mount命令,使用man mount在终端查看详细用法 第四种:使用smbclient 命令 一般来讲先列出所有共享目录,命令如下: smbclient –L //192.168.0.1/ -U yourname 输入smb的密码后,将看到共享目录列表。 假设进入共享目录share,命令如下: smbclient //192.168.0.1/share -U yourname 之后将看到一个smb:> 已经进入了smb模式,有些像ftp,敲help可以查看相关命令,get,put可以下载和上传文件。 五. 小结 以上几步,对于简单使用ubuntu和windows的文件共享于互访已经足够,更详细的资料可以参考:http://linux.vbird.org/linux_server/0370samba.php#server_pkg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行知致简

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值