+ -
当前位置:首页 → 问答吧 → 一个建议:增加ISO对中文文件名的支持

一个建议:增加ISO对中文文件名的支持

时间:2005-06-04

来源:互联网

不知道大家有无遇到过在Linux下刻录刻出来的盘的中文文件,在M$下显示乱码的问题?今天搜了一天,最后找到Turbo中有一个CJK的补丁,现在重新打包cdrecord,不知道可否解决,正在测试中。。

不知fundawang老大对这个补丁有什么看法?

作者: csyfek   发布时间: 2005-06-04

Turbo曾经是对中文支持最好的版本。

作者: evolutionlinux   发布时间: 2005-06-04

如果我没有记错的话,以前有人发过这贴,说在K3b下选中Joilet选项就不会有乱码了。

作者: fundawang   发布时间: 2005-06-04

非也,这个问题的解决归根到底是mkisofs中对中日韩双字节编码的处理。即使我们使用官方最新版本的cdrtools和mkisofs,打开Joliet,也是仅能在Linux下面正确显示,而一旦在Windoze下读取依然有问题。

刚才重新用K3B新刻一张数据光盘,刻录时在“强制输入字符编码”一项中自己填写 cp936 (这个在下拉菜单中是没有的),在WinMe下显示中文已没有问题。请看附图。

有兴趣的兄弟可以到这里下载10.1的SRPM包,到这里下载2006.0的SRPM包,自己编译一个。然后做一个试验:先选定几个中文目录或者文件,刻录时打开Joliet,刻一张盘看看效果。。。
然后编译并安装修改好的包之后,重新按我上面的方法试一下,看看有否不同。。。
***************************************************
2005-10-29 更新说明
Mandriva 2006中,gcc4更加严谨了,以致之前其中一个补丁中的小小问题会令10.1的SRPM包编译出错,为此2006的SRPM包仅仅是修正了这个小问题,同时也对依赖性做了进一步的明确。
要说明的一点,自2.6.8.x以后的版本的官方内核,倘若使用官方的cdrtools来刻录,都会出现非root用户无法刻录的问题。。这个在众多论坛上已经人所共知。为什么Mandriva可以?呵呵~答案我就不说了,google肯定有的。不过,我还是奉劝一句,刻录的时候,还是用root身份来刻吧。。。
上传的图像
winme.jpg (92.3 KB, 163 次查看)

作者: csyfek   发布时间: 2005-06-04

给这个主题加精华好吗?以后方便检索啊

作者: 懒猫   发布时间: 2005-06-05

忘记了给出我用K3B刻录时选定的设置,请见附图。
上传的图像
k3b3.jpg (49.6 KB, 121 次查看)
k3b4.jpg (53.0 KB, 111 次查看)
k3b5.jpg (56.0 KB, 90 次查看)

作者: csyfek   发布时间: 2005-06-06

要从根本上解决问题必须为mkisofs打补丁,cdrecord不能解决根本问题,k3b仅仅是cdrecord的前端,有兴趣的可以做个实验,在win下用winiso做一个包含中文文件名的iso,用未打补丁的cdrecord刻录一张光盘,不需要添加cp936选项,在win下与linux下都能很好地显示文件名。

作者: dns   发布时间: 2005-06-06

嗯,这个包就已经对mkisofs打了补丁的了。在MDK中,mkisofs是cdrecord的一个子包。而且,现在可以做的就是在Linux下做出能够能被Win和Linux都共同识别的光盘,这有两层意思。

第一:可以直接做支持中文名字的iso文件;第二,可以直接用K3B或者其他前端做自己的光盘,并且做出的光盘直接就很好地支持中文名。

其实这两点本质一样,归根到底就是mkisofs能够很好地解决中日韩双字节的编码。

作者: csyfek   发布时间: 2005-06-06

我把cdrecord-CJK-2.01-1.1.101mdk.src.rpm放在我的主目录下面,双击安装后在我的主目录下面生成了一堆文件:
cdda2wav-logo.xpm cdrtools-2.01a32-dvd.patch.bz2
cdrecord-2.01-CAN-2004-0806.patch.bz2 cdrtools-2.01a38-rawio.patch.bz2
cdrecord-CJK-2.01-1.1.101mdk.src.rpm cdrtools-2.01a38-warnings.patch.bz2
cdrecord-logo.xpm cdrtools-2.01-mdk-NLS-2bytes.patch.bz2
cdrecord.spec cdrtools-2.01.tar.bz2
cdrtools-2.01a27-writemode.patch.bz2 cdrtools-security.patch
cdrtools-2.01a28-o_excl.patch.bz2 mkisofs-logo.xpm
然后做什么?

作者: superlj   发布时间: 2005-06-06

这是一个SRPM包,那就是说需要自己编译。下载后先解压缩,之后用根用户身份使用如下命令:

rpm --rebuild cdrecord-CJK-2.01-1.1.101mdk.src.rpm

编译成功后,你就得到自己的二进制RPM包了。
如果按默认的设置编译,你会在 /usr/src/RPM/RPMS/i586/ 目录下看到你编译的包。

作者: csyfek   发布时间: 2005-06-06

引用:
作者: csyfek
这是一个SRPM包,那就是说需要自己编译。下载后先解压缩,之后用根用户身份使用如下命令:

rpm --rebuild cdrecord-CJK-2.01-1.1.101mdk.src.rpm

编译成功后,你就得到自己的二进制RPM包了。
如果按默认的设置编译,你会在 /usr/src/RPM/RPMS/i586/ 目录下看到你编译的包。
[root@localhost cdrecord]# rpm --rebuild cdrecord-CJK-2.01-1.1.101mdk.src.rpm
/usr/lib/rpm/rpmb: No such file or directory
[root@localhost cdrecord]#
这是怎么回事?

作者: superlj   发布时间: 2005-06-06

没有安装rpm开发包。

作者: csyfek   发布时间: 2005-06-06

好的,安装上了rpm开发包了,在rpm --rebuild cdrecord-CJK-2.01-1.1.101mdk.src.rpm过程中好像说要用到cdtool,我没有安装,有一些warning,没问题吧?

作者: superlj   发布时间: 2005-06-07

虽然这个是我重新打的包,但里面的依赖关系是由MDK给出的。所以,如果你不够条件编译的话,请准备好条件再编译。如果执行重新编译的一步没有出现错误的提示的话,后面的你就不用理了。

作者: csyfek   发布时间: 2005-06-07

现在还有吗这个补丁?

作者: zhy2111314   发布时间: 2006-04-10

有,就在SRPM包里面。不方便的话我也可以待会放上来。

不过我也不知道怎么说。。。按照cdrtoos的作者说,他不同意把这个补丁放到官方的版本里面去,因为这个补丁要把字符表都包含在cdrtools里面去。

除了这个,还有一个利用iconv来转换的补丁,我这几天也找到这个补丁的新版本,想去请教一下终极幻想老大如何用他来做没有文件名字没有中文名冲突问题的ISO。

作者: csyfek   发布时间: 2006-04-10

正好让我发现了。。嘿嘿。。
(我没理解 做没有文件名字没有中文名冲突问题的ISO 这句话的意思)。

我的 cdrtools 2.0.1 打的是这个patch:mkisofs-iconv-10.patch

刻录的时候,用
CD:mkisofs -r -J -jcharset=utf8 "$1" | cdrecord dev=/dev/cdrw blank=fast -data -
DVD:growisofs -dvd-compat -Z /dev/dvdrw -r -J -jcharset=utf8 "$1"

我的系统是 UTF-8 locale的。刻录出来的盘,XP 下读取没问题,中文显示正常。

附件是相应的补丁。
上传的附件
mkisofs-iconv-10.patch.bz2 (5.1 KB, 8 次查看)

作者: 晨想   发布时间: 2006-04-10

引用:
作者: 终极幻想
正好让我发现了。。嘿嘿。。
(我没理解 做没有文件名字没有中文名冲突问题的ISO 这句话的意思)。

我的 cdrtools 2.0.1 打的是这个patch:mkisofs-iconv-10.patch

刻录的时候,用
CD:mkisofs -r -J -jcharset=utf8 "$1" | cdrecord dev=/dev/cdrw blank=fast -data -
DVD:growisofs -dvd-compat -Z /dev/dvdrw -r -J -jcharset=utf8 "$1"

我的系统是 UTF-8 locale的。刻录出来的盘,XP 下读取没问题,中文显示正常。

附件是相应的补丁。
哈哈哈~真幸运啊! 老大我想说的是我原贴的补丁有些汉字虽然能够在M$下显示出来,如果一个中文目录恰恰含有这些字,那么你就不能够把这个目录删除了。。。 网上搜过说是M$使用的nls和标准的不一样。。。:ask

另附上这个nls-2byte的补丁。由于补丁较大,我把他分割为三部分。请用:
cat cdrtools-2.01-NLS-2bytes.patch.bz2.part1.txt cdrtools-2.01-NLS-2bytes.patch.bz2.part2.txt cdrtools-2.01-NLS-2bytes.patch.bz2.part3.txt >cdrtools-2.01-NLS-2bytes.patch.bz2
来重新合并。
上传的附件
cdrtools-2.01-NLS-2bytes.patch.bz2.part2.txt (195.3 KB, 7 次查看)
cdrtools-2.01-NLS-2bytes.patch.bz2.part1.txt (195.3 KB, 8 次查看)
cdrtools-2.01-NLS-2bytes.patch.bz2.part3.txt (2.6 KB, 7 次查看)

作者: csyfek   发布时间: 2006-04-11

噢,这样的,我也发现过类似这样的问题,就是同一个字,在Windows下有2个表示,很奇怪的。后来觉得并不妨碍,就没继续研究了。
现在明白了,原来是这个原因。
谢谢。:)。。。

(用了这个补丁,就没有 utf-8 这个 charset 了。怎么办?)

想了一下,好像用了 UTF-8 后,就没再碰到这个问题了,不过我测试的也不多,不一定能撞上有问题的字。。:rolleyes:

作者: 晨想   发布时间: 2006-04-11

热门下载

更多