鳥哥的 Linux 私房菜-新手討論區

特別適合 Linux 新手的討論區
鳥哥的 Linux 私房菜首頁 | 鳥哥 / Study Area 主站特搜 | Study Area | 酷!學園 討論區
新手發文時必看之:鳥園的文章管理規則提問的智慧, 簡繁體轉換的問題
現在的時間是 2010-09-03 17:33

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 13 篇文章 ] 
發表人 內容
 文章主題 : 煩請修正 Samba 伺服器的文章
文章發表於 : 2005-10-17 01:43 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2005-10-17 01:04
文章: 8
您好,感謝您辛苦的耕耘,讓弟得以在此成長,弟很榮幸能夠回饋您一些設定資料,煩請參考修正該網頁設定。

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

目前(2009/08/12)最新版本的Samba仍存在下面的選項。

伺服器端語言設定選項有三個(/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 測試時,已經不存在,故應使用上面三個語言參數。




目前(2009/08/12)最新版本的Samba客戶端功能已經大幅的修改了連線方式,採用的檔案格式為 CIFS(Common Internet File System),已經不再有中文顯示問題(不論伺服器端是dos charset=UTF8 or CP950,也不論客戶端是Windows or Linux),若您的機器可以升級到最新版本的 Samba 客戶端,請使用下面的指令連線:

mount -t cifs -o username=my_name,password=my_pass //xxx.xxx.xxx.xxx/share_floder /dest

若您的機器無法更新到最新版本的 Samba 服務(如Embedded System),您可以參考以下的連線方式。




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 於 2009-08-12 16:00 編輯,總共編輯了 18 次。

回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-10-17 11:36 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
謝謝憂鬱籃眼睛的告知。
事實上,該篇文章真的很想動手好好的修一修了~
無奈的是,目前的時間無法允許小老兒花時間大修說~真抱歉。

該篇文章使用的是 samba 2.xx 版本,與目前 FC4 上面的 samba 3.x 是不同的,
因此,在舊版的資料上,無法與您提到的參數相容的。
我在該篇文章最後面新加入此文的連結,
謝謝您的告知!很感謝! ^_^

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-10-17 23:32 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2005-10-17 01:04
文章: 8
弟對於網路與 Linux 作業系統相關的知識,真的是拜鳥哥得以成長,弟對Open Source社群的貢獻不如鳥大哥貢獻的千分之一,弟也希望能像鳥哥一樣能夠回饋社群,微薄之力希望能對您的網站有所貢獻,弟也深感非常榮幸能夠助您一臂之力 ^^。


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-10-17 23:44 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
您太客氣了~
歡迎多多指教呢! ^_^

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 : 有更豐富的網頁
文章發表於 : 2005-11-10 15:22 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2005-10-17 01:04
文章: 8
鳥哥您好

弟於日前決定將伺服器的作業系統編碼改為 Unicode ( /etc/sysconfig/i18n 中設定為 LANG="zh_TW.UTF-8" ),編碼上有些問題,上述的文章是因為這個原因所測試出來的結論。另外,將作業系統預設編碼改為 Uniocde 後,測試到現在仍有二個問題:

第一:掛載具有 big5 編碼的磁碟時,雖然不會有錯誤訊息,但是當從作業系統中複製具有中文或其他多語言檔名時,會有無法複製的錯誤。此問題解法敘述於底下文章的連結中。

第二:在 Windows 中,目前還沒有 FTP 的客戶端(如 CuteFTP,FileZilla 等)支援SFTP多語言顯示。此問題目前弟還無解,但是根據 FileZilla(http://filezilla.sourceforge.net/)的 mailling list 的文章中已經有網友解決此問題,目前所釋放出來的版本尚未支援,需等待一段時間,待該版本納入FileZilla支援後,才能夠正常顯示。在此有網友修正的執行檔(http://www.teatime.com.tw/~tommy/filezilla.zip),該執行檔為2.2.13版的執行檔,弟以2.2.17版本的套件覆蓋此執行檔能正常執行。或者另一個替代方案是使用 WebFTP(http://www.Web-FTP.org/) 與 phpWebFTP(http://www.v-wijk.net/) 從網頁中顯示中文,但此法無法支援續傳。

弟找到關於作業系統以 Unicode 編碼的中文顯示的一些解法的網頁,該往頁位於http://wiki.debian.org.tw/index.php/Unicode 該網頁有許多使用Unicode作為作業系統編碼會發生的錯誤。

當您要更新網頁資訊時,請您參考。


最後由 eyesblue 於 2005-11-14 15:15 編輯,總共編輯了 1 次。

回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-11-10 17:51 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
讚讚讚!太完美了!
感謝感謝! ^_^

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-11-21 18:59 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2005-11-21 18:37
文章: 10
兩位大哥好:
小弟目前也有語言設定的困擾,目前小弟的狀況如下:

smb.conf
display charset = UTF8
dos charset = UTF8
unix charset = UTF8

這樣的結果我的ftp所看到的中英文都正常,上傳下載也沒問題,但如果我用網芳去看這個share時,中文檔名就會變成亂碼;同樣的,如果我在用網芳建立一個中文檔名,從ftp(用smbmount的share,沒有指定codepage)看到的亦會是亂碼(在網芳則是沒問題),這是否代表網芳和ftp所使用的是不同的語系呢?

目前我所使用的kernel是2.4.31,kernel看menuconfig並不支援cp950,請問兩位大哥能給小弟一些建議嗎?
感謝~


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-12-02 13:26 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
好像 kernel 的預設參數只能寫數字,所以,在 make menuconfig 時,直接輸入 950 即可。

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2005-12-05 14:04 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2005-11-21 18:37
文章: 10
謝謝站長的回應,經過一些測試後,我已將相關code page (utf-8, cp950) load進kernel.
但相同問題仍然存在。若將smb.conf 設定如下:
display charset = UTF8
dos charset = UTF8
unix charset = UTF8
即可在ftp(用smbmount的share)與網芳"分別"顯示中文。
然而,ftp與網芳的中文還是不通的,這是否代表有一邊不是unicode呢?
應如何使兩邊都是使用unicide呀
謝謝兩位的回應。
Latrell.


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2006-01-19 22:58 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2005-10-17 01:04
文章: 8
先向您說聲抱歉,弟最近忙於畢業論文,疏於解答您的問題,請見諒。

首先您得先確認您的 Linux 伺服器端是否為 UTF8 編碼,端看 /etc/sysconfig/i18n 中的設定,若您的 Linux 伺服器編碼為 UTF8 ,您的 samba 設定檔應採用:

display charset = UTF8
dos charset = cp950
unix charset = UTF8

若您的 Linux 伺服器端所設定的編碼為 big5 ( /etc/sysconfig/i18n 中設定為 LANG="zh_TW.UTF-8" ),則應採用:

display charset = cp950
dos charset = cp950
unix charset = cp950

另外,Windows 並不是使用 Unicode 的編碼,微軟有自己的一套方法解決多語言顯示問題,在繁體中文上 windows 是使用 big5 編碼(若用程式抓編碼法出來看會得到 MS950,對應到 Linux 上的 CP950,兩者都是 big5 編碼),這點在弟先前的文章中疏忽敘述這個部份,請見諒,也感謝您告知文章中的不足,弟馬上補上。


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-01-15 19:18 
離線
初來乍到小菜鳥
初來乍到小菜鳥

註冊時間: 2006-07-07 15:57
文章: 8
不好意思,請教一下各位,
我用的是 ubuntu 6.06,並沒有語系上的問題…
但看了一下文章,自己試了一下,發現沒有 /etc/sysconfig 這個目錄…
而 /etc/sysconfig/i18n 的內容是不是就是 LANG 變數的內容呢?
而小弟 echo $LANG,得到的是 en_US.UTF-8,
是不是沒有語系問題的話,就可以略過這些設定值不管呢?

_________________
Linux 初學者、JAVA 研究中…


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-01-16 01:05 
離線
站長鳥哥
站長鳥哥

註冊時間: 2002-06-09 23:45
文章: 8464
來自: 南台灣
糟糕! ubuntu 使用的是 debian 的 Linux 版本,並非 Red Hat 系統,
小弟也不太熟悉呢!
可否請會的大哥回覆一下?

_________________
解決問題的順序:
1. 先查閱硬體(有沒有超頻/記憶體模組/周邊網路設備的好壞等等);
2. 檢查 /var/log 底下的登錄檔,尤其是 /var/log/messages 的內容;
3. 不要急,先翻書瞭解相關問題的原理,再設法解決~
4. 利用關鍵字,在 www.google.com.tw 查閱是否有人已經遇過類似的問題?
5. 都沒有辦法了,再在討論區以明確的標題以及重要的資訊貼成內文來發問啦!


回頂端
 個人資料  
 
 文章主題 :
文章發表於 : 2007-01-16 05:01 
離線
鳥友俱樂部榮譽會員
鳥友俱樂部榮譽會員

註冊時間: 2005-01-15 23:41
文章: 2805
來自: Say Ya (telnet://bbs.sayya.org)
jimmp812 寫:
不好意思,請教一下各位,
我用的是 ubuntu 6.06,並沒有語系上的問題…
但看了一下文章,自己試了一下,發現沒有 /etc/sysconfig 這個目錄…
而 /etc/sysconfig/i18n 的內容是不是就是 LANG 變數的內容呢?
而小弟 echo $LANG,得到的是 en_US.UTF-8,
是不是沒有語系問題的話,就可以略過這些設定值不管呢?


不同 linux distro 的 locale 配置檔案不一。

debian-based ? check "/etc/environment" file 看看

--


回頂端
 個人資料  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 13 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 0 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作