|
系统环境:Debian Sarge + Samba 3.0.2a + zh_CN.UTF8 locale
在使用samba的环境中,我的系统使用的是Unicode,在创建Samba共享的时候,如果是中文的共享名,在Windows2000和WinXP以上的系统中,由于有考虑到unicode的设计,所以无论用什么编码都可以看见中文共享名,而Win98和Winme就不可以了,
Samba提供了两个参数来调整:
dos charset 和 unix charset
我的系统原来是gbk的,而其他的系统使用的是Unicode的,这样在个系统之间拷贝文件的时候,如果有中文名,就非常恼火,每次还要转一下编码,这次趁买了新硬盘的机会,将gbk编码转化成了utf8的编码(感谢debian-chinese-gb邮件列表上的carlos,他提示我Debian中有convmv这个命令来将目录中的文件名转换编码,实际上convmv还可以作大小写的转换,很不错),原来在gbk环境下,Samba的配置是
dos charset = cp936
unix charset = cp936
这个样子就很好,可以适应各个客户端(98,me,2k,XP),转化成unicode后,问题来了,如果保持这个设置,各个系统会还是认出中文共享名,但是,它们创建的文件名就是gbk编码,费了老劲不是又走回去了吗?如果都改成UTF8,98和Me又认不到中文共享。
各位看官,在这儿我的脑筋打结了,走了如下弯路:
1,保持配置文件是UTF8编码,然后用GBK的环境编辑samba配置文件,加上GBK的共享文件名,结果:98可以看见中文名,但是无法访问,2k看不到中文共享名。
2,既然98是不支持Unicode,那我就想办法让它支持,在网上居然还真找到了Unicode补完计划,不过是针对Big5的补完,我装上了,没有效果。
3,还有招,我装个南极星,这个不错,可以看见中文共享了,可是,有的中文共享名是好的,有的却残缺不全,比如说,本来名称是“共享文件夹”,看起来却是“共享文件”,这还算好的,有的根本就是乱码。
没辙了,正好肚子不舒服,赶紧撇大条,完了结就打开了。
因为我们的samba的系统是unicode编码的,所以unix charset应当设置为UTF8,98只认gb2312,那就将dos charset设置为cp936.
dos charset = cp936
unix charset = UTF8
我原来以为dos charset 和 unix charset 要设置成一样的,没想到Samba还可以这样玩。
这件事告诉了我们一个道理:有问题想不通的时候,就应该撇大条。 |
|