奇怪的现象:GNOME下文件名正常,KDE下乱码
fc3的系统,gnome用的自带的2.8版本,kde是自己下源码编的,版本号3.5.4。使用中gnome和kde其他地方中文显示、输入都很正常,但是硬盘上某个fat32分区,有几个文件名里含有日文的mp3音乐文件(文件名编码不详,但是应该只可能是utf8、cp936中文gbk、cp932日文这三种之一,id3标签是v1还是v2,编码如何也不清楚),对这几个文件,无论是a) LC_CTYPE设定成zh_CN.UTF-8,相应的LC_ALL=en_US.UTF-8,mount时用参数iocharset=utf8
还是
b) LC_CTYPE设定成zh_CN.GBK,此时LC_ALL=en_US,mount参数用的是iocharset=cp936
在a、b两种情况下,gnome都能正常显示文件名,而kde就是有几个字符乱码,具体表现为方块。而LC_CTYPE=zh_CN.GBK时,xmms也可以正常显示文件的id3标签,UTF-8时也乱码。
字体用的是simsun,已经成功安装好,可以正常显示。另外G_BROKEN_FILENAMES=1的环境变量一直设定为有效。
非常有趣的现象是,当LC_CTYPE=zh_CN.GBK时,在kde环境下启动xmms,虽然konqueror和任务栏上面文件名是乱码,但是在xmms的播放列表和打开文件对话框内,文件名却能正常显示。也就是说凡是基于gtk的程序都能正常显示文件名,但是基于qt的程序却不能。
xmms在utf8下的乱码问题暂时不管,因为已经放弃utf8了。现在想求教如何在LC_CTYPE=zh_CN.GBK时让kde正常显示文件名。 Qt自己的问题,Qt<3.3.6完全分不清中日文字体。3.3.6可能稍好一点。 这个kde用的qt就是3.3.6的,而且是自己下源码编译的.............编译了一个多小时啊,这是我编译过的软件中耗时最长的了........
PS:机子还是比较快的了,编译一个内核就15-20分钟的样子,编译kdelibs也只要40来分钟的样子。没编译过firefox和openoffice,据说他们最变态。 那说明你的simsun安装方法不对。Qt 3.3.6在使用fontconfig适配字体的情况下,不可能出现图中的情况。 firefox不需要很长的时间啊
如果楼主是初学者的话
不放把KDE和Gnome的区分看淡一点
先将就用着
把Linux玩熟悉再研究这些渣渣问题啦 那说明你的simsun安装方法不对。Qt 3.3.6在使用fontconfig适配字体的情况下,不可能出现图中的情况。
xlsfont 和 fc-list这两个命令都能列出simsun来,应该算是装好了了吧?
会不会是我的fonts.conf写得有问题? 这两天又把locale换回了utf8,但是现在问题又来了,那就是gtk1的程序(XMMS)在显示同时有中文和日文的文件名时,又出现和上面相似的问题了。估计就是因为gtk2有pango来处理不同编码字体同时显示的问题,而gtk1和qt没有,所以就出现了这些问题。看来字体显示方面,还是gtk2/gnome2才是王道啊。 这两天又把locale换回了utf8,但是现在问题又来了,那就是gtk1的程序(XMMS)在显示同时有中文和日文的文件名时,又出现和上面相似的问题了。估计就是因为gtk2有pango来处理不同编码字体同时显示的问题,而gtk1和qt没有,所以就出现了这些问题。看来字体显示方面,还是gtk2/gnome2才是王道啊。
完了,为什么我的正常... 我也搞不清楚,反正文件名中同时有中文和日文时,gtk1程序就是乱码,只有中文或者只有日文时,就能正常显示,和qt如出一辙。gtk2下面的程序就正常。windows对此处理得也比较好,反正我在explorer下面就从来没出现过乱码。发个截图上来,大家可以看看。另外xmms的playlist和title始终无法在utf8下面正常显示中文文件名,这个不想去理他了。是不是转个日文字体可以解决这个问题?但是simsun应该包含了日文字体了啊,要不gtk2程序怎么是正常的?
PS:我比较喜欢收集日本的动漫音乐,所以这个问题十分突出。 simsun应该没有包含多少日文,所以有的显示不出来。fontconfig能在一个字体无法显示的所需字符的时候用别的可显示的字体进行不足。但是gtk1不使用fontconfig,所以你只能自己手写gtkrc。在其原有fontset后面加上一个日文字体试试看(gtk2无此问题。gtk2里看到的应该已经不是simsun了) 推荐一个日文字体吧。另外我记得好像可以不让系统去读/etc/gtk/gtkrc.zh_CN.utf8的设置,自己在家目录下面建一个.gtkrc优先级更高是不是?另外3n说gtk2下面的日文有的不是simsun字体,那么如何看到当前用的是用的什么字体文件?
PS:qt程序能解决当前的这个问题吗?
推荐一个日文字体吧
windows的msmincho.ttf、msgothic.ttf还有vista的Meiryo
自己在家目录下面建一个.gtkrc优先级更高是不是?
export GTK_RC_FILES=.......
另外3n说gtk2下面的日文有的不是simsun字体
呵呵,我只是猜的
那么如何看到当前用的是用的什么字体文件?
export LC_ALL=ja_JP.UTF-8;fc-match -v,不敢保证对阿 :mrgreen:
qt程序能解决当前的这个问题吗
这样挂载
/dev/hdb5 /mnt/os vfat rw,utf8 0 0
/dev/hdb6 /mnt/data ntfs ro,nls=utf8 0 0
然后LC_ALL=zh_CN.UTF-8
姑且这样试试看 gtk1程序的问题解决了,原来是gtk1的字体替换问题。
原来的gtkrc文件如下:
style "gtk-default-zh-cn" { fontset ="-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-1,\ -misc-simsun-medium-r-normal--14-*-*-*-*-*-iso10646-1" } class "GtkWidget" style "gtk-default-zh-cn"
换成
style "gtk-default-zh-cn" { fontset ="-adobe-helvetica-medium-r-normal--14-*-*-*-*-*-iso8859-1,\ -misc-simsun-medium-r-normal--14-*-*-*-*-*-iso10646-1,\ -misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0" } class "GtkWidget" style "gtk-default-zh-cn"
就只加了最后一行日文的字体替换,就可以在gtk1程序里面正常显示了。
但是还有个问题,我只知道它用了某个jisx0208.1983-0编码的字体,但它到底用了哪一种字体,由于是自动匹配的,所以还是不清楚,用 xlsfonts也是只有显示misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,具体是什么字体不知道。有哪位高人知道如何查看具体使用的字体是哪个的请指点一下。因为我很想试试在qtconfig里面使用相同的方式来作字体替换,试试能否让kde能正常显示中日混合的文件名,而qtconfig里面是不能自动匹配的,必须指定一个具体的字体来作替换。 问题终于解决了,原来真的是要装一个日文的字体才行。把win下的msmincho.ttf copy过来,用ttmkfdir生成fonts.scale后,再在~/.fonts.conf里面把字体替换设定好,就可以让qt程序正常显示带日文的文件名了!
再修改了一下~/.gtkrc文件,这下xmms也可以显示日文文件名了,以前没装msmincho字体,也可以显示,但是日文字体大小无法修改,和simsun一起显示,一些大一些小,很郁闷。现在都用12号字体,基本完美了。
但是还是有个问题,那就是为什么以前没装msmincho字体,也没有设定字体替换时,gtk2的程序却能正常显示日文文件名呢?真的是因为pango在起作用?那么它又用的是什么字体呢?
真的是因为pango在起作用?
恐怕只能是因为这个了吧。后一个问题俺不知道,去gnome版面问问看
页:
[1]
2