QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: KanKer

0.2 在 MagicLinux 上下载的文件名为乱码

[复制链接]
发表于 2005-12-10 23:21:36 | 显示全部楼层
torrent文件里没有字段指明是何种编码,单纯的给一个字符串也不是总能判断的出是什么编码格式
按照标准,应该所有的字符串都使用UTF-8编码,但总是有非标准的torrent文件。不清楚是何种编码就很难转到UTF-8。

上面那个patch应该在zh_CN.GB*系列的locale里可以正常显示UTF-8和GB*编码的字符串。因为转换前先做了UTF-8测试,如果是UTF-8就不转换了

你可以把locale改成zh_CN.UTF-8试试附件里的种子,它的编码是GBK



能进MagicLinux 2.0RC2真是太光荣了     
我会在0.3里把速度限制搞定

谢谢KanKer~~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-12-11 00:15:07 | 显示全部楼层
我觉得是指定了,你看看 torrent 里的这段描述:

d8:announce36:http://btfans.3322.org:6969/announce13:announce-listll36:http://btfans.3322.org:6969/announceel34:http://tracker.prq.to/announce.phpel43:http://tracker.torrentbox.com:2710/announceel37:http://tracker.cnxp.com:8080/announceee10:created by13:BitComet/0.5913:creation datei1134130686e8:encoding3:GBK4:infod5:filesld6:lengthi380895728e4:pathl40:Tom.Yum.Goong.2005.拳霸2.冬荫功.CD1.rmvbe10:path.utf-8l45:Tom.Yum.Goong.2005.鎷抽湼2.鍐?崼鍔
回复

使用道具 举报

 楼主| 发表于 2005-12-11 00:43:00 | 显示全部楼层
附上 ktorrent 读取 torrent 文件中编码的代码文件,要下载完整的可以到 www.kde-apps.org 上下载。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-12-11 03:55:58 | 显示全部楼层
不好意思,补丁有点问题,返回的索引颠倒了,现已修正。
你附加的那个文件我在 utf8 下选择 gbk 后保存的文件名仍是乱码,在 gb* 下一切正常,看来这个代码转换还有些问题
回复

使用道具 举报

发表于 2005-12-11 10:09:06 | 显示全部楼层
Encoding字段是个非官方扩展,我参照的两份标准里都没提到这个
http://www.bittorrent.com/protocol.html
http://wiki.theory.org/BitTorrentSpecification

还有一种扩展方式,每个文件都指定一个name.utf-8字段,目前BitStorm支持这种扩展方式,Encoding字段检测也会加上, 谢谢KanKer提醒

KanKer是用的KDE吗?不知道KDE的文件浏览器怎么确定文件名的编码方式
我这里保存到磁盘后文件名显示是正常的,locale是zh_CN.UTF-8
程序里使用的是g_filename_from_utf8()将文件名转化为G_FILENAME_ENCODING指定的编码。

在GTK的文件选择对话框里看保存的文件也是乱码?
我的locale:
gxc@ubuntu:~$ locale
LANG=zh_CN.UTF-8
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=

附件里是在我机器上保存后的文件截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-12-11 10:28:51 | 显示全部楼层
那个文件我设置为 zh_CN.UTF-8 后,保存的文件名依然是乱码,但选择 gbk 后在bitstromlite 列表框中显示正确。在 kde 中保存的文件名是本地编码,比如我的 locale 若是 utf-8 ,保存出的中文名在 locale 为 gb* 肯定是乱码,反之亦然。
也就是说在 bitstromlite 中应该是少了一步从内部显示编码到本地编码的转换(至少 QT 是这样做的,gtk 不清楚)
回复

使用道具 举报

发表于 2005-12-11 10:33:06 | 显示全部楼层
转换是做了的,用的是g_filename_from_utf8()

我这里有个ML2.0RC1,我试试看吧
回复

使用道具 举报

发表于 2005-12-11 11:04:08 | 显示全部楼层
测试结果出来啦,在ML2.0RC1上使用没打补丁的0.2a测试att.torrent正常

原因是这样的,bitstorm默认是用utf-8解码,如果不是utf-8编码则使用locale指定的charset进行解码。这是在utils.h里的convert_to_utf8函数做的

附件里是接图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2005-12-11 11:18:35 | 显示全部楼层
是啊,打不打补丁对下载没什么影响的,我这个补丁只是根据 locale 自动选择下拉框选项而已。
我若用 gb* 的 locale 下载你那个文件是没有问题的。
回复

使用道具 举报

发表于 2005-12-11 11:25:09 | 显示全部楼层
ML2.0RC1上改locale成zh_CN.UTF-8好象很费劲
写到.bash_profile里没用,/etc/bash_profile也没有

必须让KDE知道locale是zh_CN.UTF-8,单纯的在console里export然后再启动bitstorm是没用的

不知道KanKer测试时是怎么改locale的
回复

使用道具 举报

 楼主| 发表于 2005-12-11 11:44:00 | 显示全部楼层
一种方法是修改 /etc/sysconfig/i18n
若只是临时改变一下,可以在终端里用 export LANG=zh_CN.UTF-8 来改。但命令也必须在此终端里运行才行
回复

使用道具 举报

发表于 2005-12-12 09:51:09 | 显示全部楼层
经测试,0.2a在MagicLinux 2.0 RC1,locale=zh_CN.UTF-8上运行不会出现存盘文件名乱码

在console里export LANG=zh_CN.UTF-8然后运行bitstormlite后文件名乱码是因为KDE的文件浏览器知道的locale还是zh_CN.GB18030,以zh_CN.GB18030进行文件名解码,所以是乱码

附件是截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2005-12-13 00:57:07 | 显示全部楼层
向楼上两位致敬
我们这些就是研究怎么用的了....
回复

使用道具 举报

发表于 2005-12-13 10:53:57 | 显示全部楼层
请问:在将要出的RC2里,grub不能装到/上的BUG解决了吗?
_________________
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-25 20:11 , Processed in 0.054254 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

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