如何挂接中文SMB共享(各种论坛上已知方法于我都无效)
-
- 帖子: 30
- 注册时间: 2007-06-03 13:52
- 来自: 北四环中路238号 柏彦大厦406b室
- 联系:
如何挂接中文SMB共享(各种论坛上已知方法于我都无效)
我知道很多人可能认为这是老问题了,应该去Google上找。老实说我来问之前已经在Google上找了3小时并经过2小时尝试不同方法和读man page,实在找不出解法。
所有网上提到的方法无外乎加iocharset=UTF-8 codepage=CP936。都无效果。
本机(Ubuntu 7.04)所有用户均使用UTF-8,内核是自带的没有改动。服务器为Debian Linux,其上samba没有被配置成为使用GB18030,准确地说,服务器上与charset有关的配置仅一条: unix charset = UTF-8
此服务器上文件多为中文,使用Windows XP中文版、英文版及德文版访问均中文正常!仅有使用Linux mount上后中文为乱码。
mount -t smbfs //gtz.ods.org/SharedDocs /mnt (乱码)
mount -t smbfs -o iocharset=UTF-8 //gtz.ods.org/SharedDocs /mnt (乱码)
mount -t smbfs -o iocharset=UTF-8,codepage=CP936 //gtz.ods.org/SharedDocs /mnt (乱码)
后两种方式挂接会在dmesg中有以下错误:
[23060.326849] Unable to load NLS charset CP936
[23060.326881] smbfs: failed to load nls 'CP936'
有人会问即是Linux客户机访问Linux服务器,为何不使用NFS?答案是NFS安全性基于IP地址设置,而本机使用DSL线路无法提供固定IP地址;而配置基于Kerberos的NFSv4似比解决当下使用smbfs挂接的问题更为麻烦,并且(无故地)增加了服务器提供的服务数量。
望高手施以援手。谢谢!
又及:服务器使用 security = share ,此举为兼容现有的大量Windows 98客户机。考虑到这一点,才在挂接时使用smbfs而非cifs。实际上如果换为cifs将挂接失败。
所有网上提到的方法无外乎加iocharset=UTF-8 codepage=CP936。都无效果。
本机(Ubuntu 7.04)所有用户均使用UTF-8,内核是自带的没有改动。服务器为Debian Linux,其上samba没有被配置成为使用GB18030,准确地说,服务器上与charset有关的配置仅一条: unix charset = UTF-8
此服务器上文件多为中文,使用Windows XP中文版、英文版及德文版访问均中文正常!仅有使用Linux mount上后中文为乱码。
mount -t smbfs //gtz.ods.org/SharedDocs /mnt (乱码)
mount -t smbfs -o iocharset=UTF-8 //gtz.ods.org/SharedDocs /mnt (乱码)
mount -t smbfs -o iocharset=UTF-8,codepage=CP936 //gtz.ods.org/SharedDocs /mnt (乱码)
后两种方式挂接会在dmesg中有以下错误:
[23060.326849] Unable to load NLS charset CP936
[23060.326881] smbfs: failed to load nls 'CP936'
有人会问即是Linux客户机访问Linux服务器,为何不使用NFS?答案是NFS安全性基于IP地址设置,而本机使用DSL线路无法提供固定IP地址;而配置基于Kerberos的NFSv4似比解决当下使用smbfs挂接的问题更为麻烦,并且(无故地)增加了服务器提供的服务数量。
望高手施以援手。谢谢!
又及:服务器使用 security = share ,此举为兼容现有的大量Windows 98客户机。考虑到这一点,才在挂接时使用smbfs而非cifs。实际上如果换为cifs将挂接失败。
- magicsky
- 帖子: 225
- 注册时间: 2007-03-30 9:46
-
- 帖子: 30
- 注册时间: 2007-06-03 13:52
- 来自: 北四环中路238号 柏彦大厦406b室
- 联系:
-
- 帖子: 30
- 注册时间: 2007-06-03 13:52
- 来自: 北四环中路238号 柏彦大厦406b室
- 联系:
代码: 全选
zhangweiwu@esmeralda:~$ sudo mount -t smbfs -o iocharset=utf8,codepage=CP936 //gtz.ods.org/SharedDocs /mnt/
Password:
zhangweiwu@esmeralda:~$ ls /mnt/
| l
? l
205342984.rar l
a - CPD Le Xiyong
a - Indicator system Lisa
a - Internal Monitoring Liu Yanli
a - Newsletter Luo Rumin
a - Project Folder - Main Assignments for Mr WZQ.doc
a - Project Website Michael
a - Training material p
a - Translations of Documents in English p
b - Pictures PADO INPUT.xls
David Pan Fan
for Wang Yongming qian wei
for Yan Han QXD
For Zhang Weiwu t
Gerd Wang Heng
HPP WP Finale-
IP.doc x
l zzf
l
zhangweiwu@esmeralda:~$ dmesg | tail
[83444.441192] agpgart: Putting AGP V2 device at 0000:00:0b.0 into 1x mode
[83444.441225] agpgart: Putting AGP V2 device at 0000:00:10.0 into 1x mode
[83444.681808] [drm] Setting GART location based on new memory map
[83444.681929] [drm] writeback test succeeded in 1 usecs
[83451.223838] agpgart: Putting AGP V2 device at 0000:00:0b.0 into 1x mode
[83451.223868] agpgart: Putting AGP V2 device at 0000:00:10.0 into 1x mode
[86175.523932] Unable to load NLS charset CP936
[86175.523958] smbfs: failed to load nls 'CP936'
[86204.654930] Unable to load NLS charset CP936
[86204.654956] smbfs: failed to load nls 'CP936'
-
- 帖子: 30
- 注册时间: 2007-06-03 13:52
- 来自: 北四环中路238号 柏彦大厦406b室
- 联系:
惭愧!我从来就没有成功无乱码地挂接过smbfs,此外前文已经说明,服务器是Debian而非Windows。其配置文件全文如下:我一直是这个命令。。。
PS:LZ要确定你WIN系统哪里文件的编码 CP936只是一种参数 还有很多的。
代码: 全选
[global]
netbios name = USER10-4-1
unix charset = UTF-8
workgroup = WORKGROUP
server string = %h server
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = share
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
guest account = nobody
invalid users = root
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
load printers = yes
printing = cups
printcap name = cups
socket options = TCP_NODELAY
[SharedDocs]
comment = Shared Documents
guest ok = yes
guest account = nobody
read only = no
browseable = yes
writable = yes
path = /var/shared
[信息管理系统MIS]
comment = 信息管理系统MIS
guest ok = yes
guest account = nobody
read only = no
browseable = yes
writable = yes
path = /var/MIS
[homes]
comment = Home Directories
browseable = no
writable = no
create mask = 0700
directory mask = 0700
valid users = %S
[printers]
comment = All Printers
browseable = yes
guest account = smbprint
path = /var/spool/samba
printable = yes
public = yes
writable = yes
guest ok = yes
read only = no
browseable = yes
writable = yes
path = /var/shared
create mode = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
* 配置文件里并没有提到CP936,而其共享可以被中、英、德多种版本Windows XP访问均无乱码;
* 挂接时不指定codepage=CP936和指定codepage=CP936是同样的效果(乱码);
* dmesg里说我的内核没有nls cp936的支持;
- yysq009
- 帖子: 2682
- 注册时间: 2007-01-28 23:00
- 来自: @江西|南昌@
- 联系:
- wth123456
- 帖子: 234
- 注册时间: 2006-12-07 17:32
-
- 帖子: 12
- 注册时间: 2006-09-08 9:01
-
- 帖子: 30
- 注册时间: 2007-06-03 13:52
- 来自: 北四环中路238号 柏彦大厦406b室
- 联系:
谢谢楼上的非常用心地用红蓝笔标注出来!其实您所说我的已经知道了,相关的man我也读过多遍,算是家庭作业做得好的学生了;) 各种方法均没有效果,所以才在论坛上提问,一是以免其它用户也有问题,却因为少交流不知道;二是也许高手能从细节(如dmesg)找出解法,或者会再问我要提供的诊断信息。其实我自己学力有限,但是还是感觉到似乎是默认的内核配置有关的问题,考虑到gnome中读取smb共享并不使用内核提供的代码转换功能,而Ubuntu开发人员可能因此忽视了命令行用户?我的遭遇或为一提醒。
下面是各种尝试的记录:
注意上面名称为一竖线的文件都是乱码所致。
下面是各种尝试的记录:
代码: 全选
zhangweiwu@esmeralda:~$ sudo mount -t smbfs -o iocharset=UTF-8 //gtz.ods.org/SharedDocs /mnt/
Password:
zhangweiwu@esmeralda:~$ ls /mnt/ | head -n 2
|
|
zhangweiwu@esmeralda:~$ sudo mount -t smbfs -o iocharset=UTF-8,codepage=UTF-8 //gtz.ods.org/SharedDocs /mnt/
Password:
zhangweiwu@esmeralda:~$ ls /mnt/ | head -n 2
|
|
zhangweiwu@esmeralda:~$ ls /mnt/ | head -n 2
|
|
zhangweiwu@esmeralda:~$ sudo umount /mnt/
zhangweiwu@esmeralda:~$ locale
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
zhangweiwu@esmeralda:~$ dmesg | tail
[21661.526449] agpgart: Putting AGP V2 device at 0000:00:0b.0 into 1x mode
[21661.526480] agpgart: Putting AGP V2 device at 0000:00:10.0 into 1x mode
[28676.287420] agpgart: Putting AGP V2 device at 0000:00:0b.0 into 1x mode
[28676.287837] agpgart: Putting AGP V2 device at 0000:00:10.0 into 1x mode
[28676.547596] [drm] Setting GART location based on new memory map
[28676.547718] [drm] writeback test succeeded in 1 usecs
[29232.499775] agpgart: Putting AGP V2 device at 0000:00:0b.0 into 1x mode
[29232.499806] agpgart: Putting AGP V2 device at 0000:00:10.0 into 1x mode
[31192.442846] Unable to load NLS charset UTF-8
[31192.442876] smbfs: failed to load nls 'UTF-8'
- magicsky
- 帖子: 225
- 注册时间: 2007-03-30 9:46
-
- 帖子: 30
- 注册时间: 2007-06-03 13:52
- 来自: 北四环中路238号 柏彦大厦406b室
- 联系:
- cannys
- 帖子: 95
- 注册时间: 2007-11-30 17:18
Re: 如何挂接中文SMB共享(各种论坛上已知方法于我都无效)
DDDDDDDDDDDDDD