LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 978|回复: 0

转贴一下关于Samba的语言设定的贴子,非常详细

[复制链接]
发表于 2006-3-1 22:27:58 | 显示全部楼层 |阅读模式
煩請修正 Samba 伺服器的文章
发表于:鳥哥的 Linux 新手討論區
http://phorum.vbird.org/viewtopic.php?t=22001


發表於: 2005-10-17 01:43    文章主題: 煩請修正 Samba 伺服器的文章          引言回覆
您好,感謝您辛苦的耕耘,讓弟得以在此成長,弟很榮幸能夠回饋您一些設定資料,煩請參考修正該網頁設定。

弟管理學校的網頁伺服器,該伺服器也同時是大家的分享檔案集散中心,是以Linux架設起來的,該伺服器以 Unicode 作為系統編碼,而其他Windows系統則是big5(MS950)編碼,最近我要讓另一台 Linux 的主機(Unicode)掛載該伺服器所分享的檔案,編碼轉換的問題讓我頭痛了一個禮拜,最後發現到該伺服器更新的內容並未於網頁中更新,以下便是弟從文件中找出來的設定:

伺服器端語言設定選項有三個(/etc/samba/smb.conf中預設沒有這三個選項,需自行加入):
display charset = UTF8
dos charset = cp950
unix charset = UTF8

display 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 的參數在此範例中會失敗(是顯示字型失敗,不是掛載失敗)。

以上,請參考。

eyesblue 在 2006-01-20 00:27 作了第 15 次修改
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表