免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8042 | 回复: 11
打印 上一主题 下一主题

[samba] samba的中文问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-28 18:04 |只看该作者 |倒序浏览
我的 samba global设置如下
display charset = utf8
unix charset = utf8
dos charset = utf8
但是我用linux在samba文件服务器里建立的中文目录在windows显示下是乱码。而用windows建立的中文目录则在linux下显示为一堆问号。

我查阅了相关的资料。windows用的是unicode编码 也就是utf16.如何设置使samba支持utf16?

附profile配置:
LANG="en_US.UTF-8"; export LANG

论坛徽章:
0
2 [报告]
发表于 2008-07-28 21:40 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2008-07-29 08:26 |只看该作者
windows分很多语言,繁体的就是big5,简体一般为gb2312
伺服器端語言設定選項有三個(/etc/samba/smb.conf中預設沒有這三個選項,需自行加入):
display charset = UTF8
dos charset = cp950
unix charset = UTF8  

輸出訊息到 stdout,stderr (也就是在伺服器自己的銀幕上顯示訊息)時所用的編碼。這邊應該是指輸出訊息,通常設定成與底下的unix charset選項相同。

dos charset = cp950
DOS客戶端連接到伺服器時,所使用的編碼。測試結果不管是Unix或windows都使用這個編碼設定,在設定該伺服器給中文Windows存取時,應使用這個新的參數,在smb.conf裡面沒有 950 這種參數,一定是 "cp950",google上面有些文章寫950,少了cp 兩個字元,那是不正確的,在 testparm 檢查時會失敗。

unix charset = UTF8
本機Linux檔案系統所使用的編碼方式。Samba必須要知道本機的編碼方式,才能正確的轉換要送給客戶端的訊息,這個選項在一般情況下,應與您 Linux 伺服器系統編碼相同,也就是 /etc/sysconfig/i18n內所設定的編碼方式。


範例1.Linux作業系統編碼為 big5 (換句話說,/etc/sysconfig/i18n裡面所設定的預設編碼是 Big5 時),而Samba Server要分享檔案給繁體中文的 Windows 系統時,則伺服器該如下設定:
display charset = cp950
dos charset = cp950
unix charset = cp950


範例2.Linux作業系統編碼為Unicode,而Samba Server要分享檔案給繁體中文的 Windows 系統時,則伺服器該如下設定:
display charset = UTF8
dos charset = cp950
unix charset = UTF8


簡單的說,在一般情況下,"display charset"與"unix charset"選項設定成與作業系統編碼相同(/etc/sysconfig/i18n),"dos charset" 選項設定成 cp950即可,特殊情況調整客戶端的掛載方式也能正確接收編碼。

註1:"client code page = 950" 這個參數在 FC4版本以 testparm 測試時,已經不存在,故應使用上面三個語言參數。

註2:Windows 並不是使用 Unicode 的編碼,微軟有自己的一套方法解決多語言顯示問題,在繁體中文上 windows 是使用 big5 編碼(若用程式抓編碼法出來看會得到 MS950,對應到 Linux 上的 CP950,兩者都是 big5 編碼),雖然在某些情況下似乎可以顯示多語言,那是因為作業系統所使用的"字集"有囊括某些其他語言的文字,而"字集"與"編碼"在 Unicode 的定義上是分開的,在此不多贅述,以免大家對這些名詞混淆,若對此有興趣的朋友可以一起討論。



Client 端掛載的語言選項也有三個(使用 mount 或 smbmount 指令掛載時,加在 -o 選項後面):
iocharset = UTF8
codepage = cp950
unicode

iocharset = UTF8 指定本機電腦所使用的編碼方式。這個選項在一般情況下,應與您 Linux 客戶端主機所使用的編碼方式相同,也就是 /etc/sysconfig/i18n 內所設定的編碼方式。
codepage = cp950 指定遠端伺服器送出訊息的編碼方式。
unicode 使用 unicode 來與伺服器通訊。


範例1.將Linux當作客戶端,掛載另一台 Linux Samba Server,而該 Server 中的 "dos charset" 設定成 cp950 時,應如下掛載:

mount -t smbfs -o username=my_name,password=my_pass,codepage=cp950 //xxx.xxx.xxx.xxx/share_floder /dest


範例2.將Linux當作客戶端,掛載另一台 Linux Samba Server,而該 Server 中的 "dos charset" 設定成 UTF8 時,應如下掛載:

mount -t smbfs -o username=my_name,password=my_pass,codepage=UTF8 //xxx.xxx.xxx.xxx/share_floder /dest


範例3.將Linux當作客戶端,掛載另一台繁體中文 Windows 系統的分享目錄時,應如下掛載:

mount -t smbfs -o username=my_name,password=my_pass,codepage=cp950 //xxx.xxx.xxx.xxx/share_floder /dest

關於掛載的方式,端看 Samba Server 所送出來的字型編碼是何種編碼(dos charset 選項),客戶端只要使用相同的編碼接收便能正確顯示。而使用 iocharset=cp950 的參數在此範例中會失敗(是顯示字型失敗,不是掛載失敗)。

附上我的SAMBA的语系:
/etc/sysconfig/i18n
LANG="en_US.UTF-8"
SUPPORTED="zh_HK.UTF-8:zh_HK:zh:zh_CN.UTF-8:zh_CN:zh:zh_SG.UTF-8:zh_SG:zh:zh_TW.
UTF-8:zh_TW:zh:en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

/etc/samba/smb.conf
display charset = UTF8
dos charset = cp950
unix charset = UTF8

这样的设置,我的环境是有REDHAT ENT 5.1 客户是winxp简体和繁体和英文版,其中英文版选的内码是中文RPC。不管从哪个电脑上传文件到SAMBA,看中文都没有问题。

[ 本帖最后由 ljpwinxp 于 2008-7-29 08:40 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-07-29 17:26 |只看该作者
谢谢大家,虽然问题暂时还没解决

论坛徽章:
0
5 [报告]
发表于 2008-07-29 18:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2008-07-29 22:18 |只看该作者
ljpwinxp 的资料不错哦!

论坛徽章:
0
7 [报告]
发表于 2008-08-02 16:43 |只看该作者
cp936 或者 gb2312 可以。

论坛徽章:
0
8 [报告]
发表于 2008-08-04 15:29 |只看该作者
发现 samba中编码的设置是需要和 系统环境变量一直的。
我改为了 en_US.UTF-8之后发现原先 smb.conf中指定的 cp936也变成乱码了,把cp936改为 UTF-8即可。

论坛徽章:
0
9 [报告]
发表于 2008-08-12 00:41 |只看该作者
我查阅了相关的资料。windows用的是unicode编码 也就是utf16.-----对!



如何设置使samba支持utf16? --------------linux ,unix  基本都不支持,或者需要间接(转换后)支持,samba也无法支持.目前只能选win支持utf-8的方法.

linux unix和win对编码方案理解的不同,
导致 中,日,韩 国人 用起来,乱码满天飞
导致 [我认为]linux,unix不适合大多数 中,日,韩 国人

论坛徽章:
0
10 [报告]
发表于 2008-08-12 06:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP