redcomet 发表于 2003-11-5 10:31:16

我的xchat上公社的irc有部分乱码,大家帮我看看

debian/testing
xchat 2.0.2
已设置字体Simsun 10,Bitstream Vera Sans 10
登陆后就发现有乱码
效果见图
该在哪儿再设置字体吗?

xLoneStar 发表于 2003-11-5 11:11:06

这基本上是服务器上设定错误引起的,下面我来详细解释一下

2.0.2 以及之前的 xchat 使用一次 g_locale_to/from_utf8 函数来将收到的 locale encoding 字符串转换为 utf-8 以供显示。然而,这样的转换可能会失败,比如当前 locale 是中国,然而输入字符串却并非 GB 码。如果转换失败,xchat 将 fallback 到用 iso-8859 来转换输入字符串,这是不会失败的。

不幸的是,g_locale_to/from_utf8 函数有这样的特性,只要输入字符串中有一个非法的字符,整串都不再翻译了,返回失败。这是它告诉程序发现非法字符的方式。而用 iso-8859 转出来的结果,就是我们俗称的乱码。

那么,是什么导致它收到了非法字符串呢?irc.linuxfans.org 事实上的标准就是 GB 码系列。但它还有一个特性,就是由服务器端来维护各个频道的当前状况。如果服务器重启,ircd 会将关机前各个频道的属性、标题等全部恢复回来。在恢复标题时,此程序有个最大长度限制,如果关机前该频道的标题过长,则会被截断。不幸的是,截断时它并未考虑多字节变长编码,本例就是在串尾,截断在了一个汉字的中间,从而导致整串字符成了非法字符串,而成了乱码。

因此严格说来,xchat 本身的处理并无错误,只是不够“强壮”。从 2.0.3 开始,它开始会尝试剔除串中的非法字符,然后再转换,所以之后的版本,都能够处理这样的状况,不再因一个尾巴而放弃整个字符串。

最新版的 xchat 为 2.0.5,rpm 可以从这里拿到

redcomet 发表于 2003-11-5 12:04:02

pretty good!!!!!!!!!!!!!!
回答了我所有的疑问
因为发现近#linuxfans频道就是正常的
这就去装个新版的
thx very much !!

HeartIcy 发表于 2003-11-11 21:43:53

wine and mirc working......
页: [1]
查看完整版本: 我的xchat上公社的irc有部分乱码,大家帮我看看