LinuxSir.cn,穿越时空的Linuxsir!

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

升级到gnome2.14后文件名乱码[solved]

[复制链接]
发表于 2006-5-10 22:14:15 | 显示全部楼层 |阅读模式
原来的文件名实用GBK编码的
现在的locale还是zh_CN.GBK
但是显示原来的文件名就全是乱码了
网上有人说gnome2.14文件名都用utf8了

现在干脆吧locale改成zh_CN.UTF-8
文件名也转成UTF-8了
但是带来的问题好多
比如audacious打开m3u文件全是乱码
windows下ftp客户端看到的也全是乱码

想知道大家都是怎么解决的,谢谢啦


现在还是改回到GBK编码,UTF-8编码太不方便
gnome下看到gbk编码的文件名还是比较方便的
在这里找到了解决方法:http://developer.gnome.org/doc/API/2.0/glib/glib-running.html
在环境变量里增加G_FILENAME_ENCODING="@locale"
就可以让glib知道文件名是用当前的locale来编码的
还可以通过设置G_BROKEN_FILENAMES来达到这一效果(只用一个就够了)

两个环境变量解释如下:

G_FILENAME_ENCODING.   This environment variable can be set to a comma-separated list of character set names. GLib assumes that filenames are encoded in the first character set from that list rather than in UTF-8. The special token "@locale" can be used to specify the character set for the current locale.

G_BROKEN_FILENAMES.  If this environment variable is set, GLib assumes that filenames are in the locale encoding rather than in UTF-8. G_FILENAME_ENCODING takes priority over G_BROKEN_FILENAMES.
发表于 2006-5-11 21:29:35 | 显示全部楼层
谢谢了,我去试试,这个问题最近困扰了我几天了。。。
回复 支持 反对

使用道具 举报

发表于 2006-5-14 12:28:51 | 显示全部楼层
那个设置应该加在哪?是在make.conf里面吗?为什么我加了以后所有的中文文件名还是乱码?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-14 15:40:51 | 显示全部楼层
如果你想让所有用户都看到你的环境变量,在/etc/profile中加一行:
export G_FILENAME_ENCODING="@locale"
如果你一个人用,在~/.bash_profile中加
如果只是gnome要用的话,在~/.gnomerc中加即可

第三个我没有试过,应该也可以
回复 支持 反对

使用道具 举报

发表于 2006-5-18 14:21:10 | 显示全部楼层
为什么我在/etc/profile和~/.bash_profile中加入了这一句,并运行source /etc/profile,文件名还是乱码?重启也不行。还有,不论是root还是一般用户,主目录下都没有.gnomerc这个文件(我已经升级到2.14)。
回复 支持 反对

使用道具 举报

发表于 2006-5-19 19:39:16 | 显示全部楼层
现在发现了,加载分区的时候iocharset参数从cp936变成utf8就可以正常显示中文了。但新的问题出现了,这个分区是作为ftp的家目录,以前用cp936时,客户端显示的中文很正常。现在linux下显示中文正常,但是ftp客户端显示中文是乱码,各位大虾,这个怎么解决阿?
回复 支持 反对

使用道具 举报

发表于 2006-5-20 00:49:14 | 显示全部楼层
因为你的编码改UTF8了,所以客户端显示不正常,lftp可以设置server的编码解决,windows下的客户端暂时没找到解决方法。台湾有人给vsftpd做过补丁,将vsftpd向客户端发送的数据转换为big5编码,但是这个补丁已经失效了。也暂时没找到解决的办法。所以我继续用gbk
回复 支持 反对

使用道具 举报

发表于 2006-5-20 09:42:53 | 显示全部楼层
我试过把locale改成gbk,同时mount分区的时候只用iocharset=cp936,并在/etc/profile中把G_FILENAME_ENCODING="@locale"加上。但这时候显示的中文名还是乱码。server是vsftpd,win客户端显示正常。不知道楼上和楼主说用gbk可以正常显示是怎么弄的?
回复 支持 反对

使用道具 举报

发表于 2006-5-22 21:04:03 | 显示全部楼层
楼主,这个问题不解决我寝食难安阿,赶紧赐教一下吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-24 09:45:46 | 显示全部楼层
楼上的你在GBK的终端下显示一下中文文件名试试,可能发生这几种情况:
1.在linux的文件系统下:
   1.1.终端下乱码,说明你的文件名编码不是GBK,有可能是UTF8
   1.2.终端下正常,说明文件名编码是GBK,那就是你的文件浏览器的问题了
2.在mount上的window文件系统下,可能会随挂载选项的不同有一些问题,这是我的挂载选项:
#/etc/fstab
/dev/hda1       /mnt/winc   ntfs        ro,nls=gb2312,umask=000,uid=1000,gid=1000   0 0
/dev/hda2       /mnt/wind   vfat        rw,umask=000,fmask=111,iocharset=gb2312,codepage=936    0 0
回复 支持 反对

使用道具 举报

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

本版积分规则

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