LinuxSir.cn,穿越时空的Linuxsir!

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

gnome里应用程序不能正确显示中文文件名

[复制链接]
发表于 2005-7-31 15:42:51 | 显示全部楼层 |阅读模式
nautilus和gnome terminal里能正常显示所有的中文文件名。
但是其他的应用程序显示中文文件名则有问题,比如
1。 beep-media-player,在添加mp3时,看到的文件名全是\323\235\356\...之类的数字。
而playlist里mp3的中文名字和歌手信息显示却完全正常。
2。 acroread, 是中文版7.0,阅读中文pdf没有问题,但还是中文文件名显示有毛病,通过"
file--open"浏览文件是根本看不到中文文件名的pdf,在终端上有这样的消息:
Gtk-Message: The filename "5qzone_\301\265\260\256\264\357\310\313.torrent" coul
dn't be converted to UTF-8 (try setting the environment variable G_FILENAME_ENCO
DING): Invalid byte sequence in conversion input

问题应该是我的系统不能显示gbk编码的汉字,locale显示如下:
#locale
LANG=en_US.UTF-8
LC_CTYPE=zh_CN.GBK
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

后来修改~/.gnomerc
export G_FILENAME_ENCODING=GBK
export G_BROKEN_FILENAMES=1

可是问题依旧。

请问如何能让gnome里的gtk2.0程序能显示中文文件名?
对了,怎么才能知道一个中文字符到底是gbk编码还是utf-8编码?
发表于 2005-7-31 16:20:11 | 显示全部楼层
locale全部为zh_CN.GBK时,没有问题。自己没事乱搞locale,纯属自找麻烦。
回复 支持 反对

使用道具 举报

发表于 2005-7-31 16:35:21 | 显示全部楼层
xlsfonts看看有没有正确安装中文字体
回复 支持 反对

使用道具 举报

发表于 2005-7-31 17:21:10 | 显示全部楼层
Post by fundawang
locale全部为zh_CN.GBK时,没有问题。自己没事乱搞locale,纯属自找麻烦。

人家选择自己的locale,怎么能说是自找麻烦?何出此言?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-31 17:24:04 | 显示全部楼层
而且即使将locale改成zh_CN.GBK,问题依旧。

似乎应该在.gnomerc里加G_BROKENFILE=1,但我这样加了,echo $G_BROKENFILE却什么也没有。不知道为什么不能设置环境变量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-31 17:37:10 | 显示全部楼层
xlsfonts出来一堆东西,我怎么知道缺少什么字体呢
回复 支持 反对

使用道具 举报

发表于 2005-7-31 17:42:47 | 显示全部楼层
我的系统也是en_US.UTF-8的。

依我所见,问题就是你自己所说的gtk的问题。

可否考虑从以下几个方面解决?

1。安装 unifont 这个字体。或者参考这里的帖子,安装更小字号的unifont

http://www.thev.net/cgi-bin/awki ... x_?stamp=1079802575

这一步是为了让它来显示汉字。

2。 修改 /etc/gtk/gtkrc.utf-8文件。

就用我们刚才安装的字体:

  1. style "default-text" {
  2.        fontset = "-sony-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-1,\
  3.                  -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1"
  4. }

  5. class "GtkWidget" style "default-text"
复制代码


这些字体的具体信息从哪里来?你可以运行:
xfontsel, 把上面的那些字体一一选出来。以后你要什么样的字体信息,就可以照此选择。

3。把你的/etc/fstab中vfat分区中的iocharset改成如下这样:


  1. /dev/hdb2 /mnt/hdb2 vfat users,exec,umask=000,iocharset=utf8 0 0
  2. /dev/hdb3 /mnt/hdb3 vfat users,exec,umask=000,iocharset=utf8 0 0
复制代码



4。 如果还是不能解决,请搜索网上关于utf8环境下配置的帖子。我推荐一篇
摩托学园的帖子,你可以参考。

good luck

-----------

补充一句:

建议你把系统改为纯 utf8 的。 为什么要把LC_CTYPE改为 gbk 呢?

我这里纯的 utf8 用的很好。 所有的界面都是英文的,只要能显示汉字和输入汉字就可以了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-31 18:47:28 | 显示全部楼层
Thanks!

我这就动手试试看。:-)

ps.我的系统里没有vfat分区,全是ext3.我就是希望界面都是英文,只要汉字和输入汉字是中文这样的效果。
回复 支持 反对

使用道具 举报

发表于 2005-7-31 18:51:20 | 显示全部楼层
自己把/usr/share/locale/zh_CN/LC_MESSAGES目录的权限改成000,或者干脆删掉。

现在的人都已经崇洋媚外的什么程度了,连用电脑都以用英文为荣。中国人不用中文,还要指望外国人来用么?中文的落寞,就是你们这些人搞的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-31 19:04:41 | 显示全部楼层
Post by monpython
我的系统也是en_US.UTF-8的。

依我所见,问题就是你自己所说的gtk的问题。

可否考虑从以下几个方面解决?

1。安装 unifont 这个字体。或者参考这里的帖子,安装更小字号的unifont

http://www.thev.net/cgi-bin/awki ... x_?stamp=1079802575

这一步是为了让它来显示汉字。

2。 修改 /etc/gtk/gtkrc.utf-8文件。

就用我们刚才安装的字体:

  1. style "default-text" {
  2.        fontset = "-sony-fixed-medium-r-normal--16-150-75-75-c-80-iso8859-1,\
  3.                  -gnu-unifont-medium-r-normal--16-160-75-75-c-80-iso10646-1"
  4. }

  5. class "GtkWidget" style "default-text"
复制代码


这些字体的具体信息从哪里来?你可以运行:
xfontsel, 把上面的那些字体一一选出来。以后你要什么样的字体信息,就可以照此选择。

3。把你的/etc/fstab中vfat分区中的iocharset改成如下这样:


  1. /dev/hdb2 /mnt/hdb2 vfat users,exec,umask=000,iocharset=utf8 0 0
  2. /dev/hdb3 /mnt/hdb3 vfat users,exec,umask=000,iocharset=utf8 0 0
复制代码



4。 如果还是不能解决,请搜索网上关于utf8环境下配置的帖子。我推荐一篇
摩托学园的帖子,你可以参考。

good luck

-----------

补充一句:

建议你把系统改为纯 utf8 的。 为什么要把LC_CTYPE改为 gbk 呢?
                   是en_US.utf-8还是zh_CN.utf-8?应该是en_US.utf-8吧

我这里纯的 utf8 用的很好。 所有的界面都是英文的,只要能显示汉字和输入汉字就可以了。


你知道怎么判断一个字符的编码方式是utf-8还是gbk吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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