LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: FireMeteor

总结:codepage与iocharset

[复制链接]
发表于 2006-8-19 22:01:10 | 显示全部楼层
Post by 难免有错
在网易发贴乱码是怎么回事?

是啊,一直搞不清楚是怎么一回事
回复 支持 反对

使用道具 举报

发表于 2006-8-19 22:47:50 | 显示全部楼层
Post by realtang
mount -t vfat -o utf8 就可以全搞定了。


最好写入几个中文文件名的文件到这个fat分区,然后回到windows,在cmd下dir /X,或者在Linux中用mount -t msdos -o codepage=936挂载,然后在konsole中,选择编码GBK,LANG=zh_CN ls 挂载点,看看结果。
回复 支持 反对

使用道具 举报

发表于 2006-12-23 04:24:26 | 显示全部楼层
我用的ubuntu 6.06,locale输出如下:
LANG=en_AU.UTF-8
LANGUAGE=en_AU:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

用下面的任一个命令挂载一个网络中的windows文件服务器上的目录中文显示都是乱码,不知道该怎么办?
sudo mount -t smbfs -o utf8,username=ID,password=PW //hostname/dir /home/dir/
sudo mount -t smbfs -o iocharset=utf8,username=ID,password=PW //hostname/dir /home/dir/
sudo mount -t smbfs -o nls=utf8,username=ID,password=PW //hostname/dir /home/dir/
回复 支持 反对

使用道具 举报

发表于 2006-12-23 11:43:51 | 显示全部楼层
Post by yankaiqian
我用的ubuntu 6.06,locale输出如下:
LANG=en_AU.UTF-8
LANGUAGE=en_AU:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8

用下面的任一个命令挂载一个网络中的windows文件服务器上的目录中文显示都是乱码,不知道该怎么办?
sudo mount -t smbfs -o utf8,username=ID,password=PW //hostname/dir /home/dir/
sudo mount -t smbfs -o iocharset=utf8,username=ID,password=PW //hostname/dir /home/dir/
sudo mount -t smbfs -o nls=utf8,username=ID,password=PW //hostname/dir /home/dir/

挂载smbfs好像还不能做到和fat等等相同。

试试同时使用iocharset=utf8, codepage=cp936。我就是这样用的,完全ok。
回复 支持 反对

使用道具 举报

发表于 2006-12-23 11:47:53 | 显示全部楼层
-o codepage=cp936,iocharset=utf8
回复 支持 反对

使用道具 举报

发表于 2006-12-23 15:17:48 | 显示全部楼层
喜欢这种讲为什么的文章。
以前只知道这样来。但是为什么呢?
回复 支持 反对

使用道具 举报

发表于 2007-1-7 15:55:43 | 显示全部楼层
Post by waq
是啊,一直搞不清楚是怎么一回事

网易发帖好像已经没乱码问题了
回复 支持 反对

使用道具 举报

发表于 2007-1-7 16:29:10 | 显示全部楼层
iocharset要与你使用的locale匹配

看到这句话勉强搞明白locale 为 gb18030  下用utf8挂载
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-8 15:22:43 | 显示全部楼层
Post by xw_xiao
挂载smbfs好像还不能做到和fat等等相同。

试试同时使用iocharset=utf8, codepage=cp936。我就是这样用的,完全ok。

也可以试试cifs,smb的升级版,这个应该可以直接用utf8的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-1-8 15:27:04 | 显示全部楼层
Post by seamonkey
最好写入几个中文文件名的文件到这个fat分区,然后回到windows,在cmd下dir /X,或者在Linux中用mount -t msdos -o codepage=936挂载,然后在konsole中,选择编码GBK,LANG=zh_CN ls 挂载点,看看结果。

好奇?会有怎样的结果?msdos和vfat有啥区别?没有做实验……
不过win95以后支持长文件名的fat分区里面,长文件名是用unicode存放的,短文件名可能还是用本地字符集存放的。所以用utf8挂载vfat写入的中文文件名在windows里面长文件名应该是对的。但是8.3格式的短名字不敢保证。因为我自己不在乎短名字,所以就一直都是这么用了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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