自由狼-台风 发表于 2009-2-18 18:50:39

中文文件名乱码。何解?

原先使用MagicLinux-2.0。因系统老旧,在安装Firefox3、FlashPlugin10等新软件方面遇到麻烦,不得不升级。

MagicLinux-2.1的问题很多,在2.5出现之前我暂时转向EverestLinux-0.6。但在老系统中正常显示的中文文件名在信系统中全显示为方框和问号。

在挂载包含旧有数据的分区时,是否应该加一些特别的参数?或者还有什么别的处置办法?

新系统的语言信息:
# locale
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=
#
要解决问题,我需要怎么操作?我还需要提供哪些信息?谢谢。

自由狼-台风 发表于 2009-2-18 19:13:53

我刚才在Everest0.6中成功地做了一个文件名转换:
# convmv -f gbk -t utf8 ����3.png
Starting a dry run without changes...
mv "./����3.png"      "./捣乱3.png"
No changes to your files done. Use --notest to finally rename the files.
# convmv -f gbk -t utf8 ����3.png --notest
mv "./����3.png"      "./捣乱3.png"
Ready!
# convmv -f gbk -t utf 捣乱3.png --notest
Skipping, already UTF-8: ./捣乱3.png
Ready!
#
据此得知,原来的发行版是用GB18030方式给中文文件名编码的(convmv中没有gb18030,最接近的可能就是gbk),而Everest0.6用UTF8方式。
这样,当前情况就是我存数据的分区(包括移动硬盘在内的多个分区)上的中文文件名都是用GB18030方式编码的。由于迁移还没有完成,我现在新旧系统正交替着用。在不对文件名重新编码的情况下,怎样正确显示以GB18030方式编码的中文文件名?

nihui 发表于 2009-2-18 19:17:37

way 1:全部用 convmv 转换
way 2:挂载分区的时候使用 iocharset 参数
way 3:把 everest linux 的 locale 改成 GB18030

亦幻 发表于 2009-2-18 19:50:30

/dev/sda5   /mnt/sda5   vfat codepage=936,iocharset=cp936,umask=0,exec,rw 0 0
/dev/sda6   /mnt/sda6vfat codepage=936,iocharset=cp936,umask=0,exec,rw 0 0
ML我用的

自由狼-台风 发表于 2009-2-18 19:52:38

少了“-o” 和“-t”吧?

貌似这招似之对vfat有用,我这里要解决的是ext3……

控制中心等地方能把由KDE中启动的程序的编码全弄成GBK吗?

[ 本帖最后由 自由狼-台风 于 2009-2-18 19:54 编辑 ]

nihui 发表于 2009-2-18 20:00:14

locale 这个东西控制中心改不了的。。

要不就 LC_ALL=zh_CN.GB18030 xxxxxxx 来启动程序...

如果你想同时使用 magiclinux / everestlinux 双系统的话,那么 way 1 也不行了。。

亦幻 发表于 2009-2-18 20:02:31

恩,那要请教高手们拉,哈哈

jiangtao9999 发表于 2009-2-18 20:18:11

修改 everest 的 locale 吧。

自由狼-台风 发表于 2009-2-18 20:23:32

最新进展:
将默认编码改成GBK了,能正确显示原有分区上的中文文件名了。

参考:
http://topic.csdn.net/t/20050807/12/4193818.html

问题:
Everest0.6支持GB18030吗?GB12345又是什么?

jiangtao9999 发表于 2009-2-18 20:35:56

GB18030 是必须支持的,这个是硬性指标。
GB12345 和 GB13000 一个是 GB 系列延续的兼容编码,一个是全新的符合 unicode (或者是 iso ?忘了)标准的编码,印象里兼容 utf8 。

如果可以最好使用 GB18030 ,比 GBK 支持的汉字还要多点,也向下兼容。不过一般应用,GBK 就足够了。GB2312 可以放弃了。

haulm 发表于 2009-2-19 05:08:33

我觉得放弃GB码使用UTF8码才是正道,技术落后于别人如何强制别人使用自己的一套编码,到头来还是自己找自己麻烦,国家只限制流通发行的商品发布需要支持GB码,但并不强制用户使用GB码。

sejishikong 发表于 2009-2-19 08:31:21

gb2312/gbk/gb18030主要是向前兼容,gb13000和其它gb系列不兼容,所以现在基本是没人用的。
编码和技术没什么关系,gb主要是历史遗留问题。

这种文件名乱码还有一个解决方式,fuse-convmvfs,可以不用转换文件名。

jiangtao9999 发表于 2009-2-19 09:43:54

GB和UTF8效果功能一样的,,不分谁先进谁落后,如果硬要说先进GB系列应该更符合要求。
都基于UNICODE。都不能完整覆盖需要的字符。不过GB是自己的,添加未支持的字符方便。而且向前兼容,用UTF需要完全转码,而且自己不能强行添加新的字符。而且也不能确定UTF8就是未来的标准编码。

beter_hans 发表于 2009-3-5 13:26:52

原帖由 jiangtao9999 于 2009-2-19 09:43 发表 http://www.linuxfans.org/bbs/images/common/back.gif
GB和UTF8效果功能一样的,,不分谁先进谁落后,如果硬要说先进GB系列应该更符合要求。
都基于UNICODE。都不能完整覆盖需要的字符。不过GB是自己的,添加未支持的字符方便。而且向前兼容,用UTF需要完全转码,而且自己不能强行添 ...

我还是喜欢 UTF-8 只要程序支持,可以同时显示多国文字,其他编码都无法办到,一般跨国企业的 网站都是 UTF-8 的。 我也很高兴的看到 这个论坛也是 UTF-8 的.

jiangtao9999 发表于 2009-3-5 15:49:55

原帖由 beter_hans 于 2009-3-5 01:26 PM 发表 http://www.linuxfans.org/bbs/images/common/back.gif


我还是喜欢 UTF-8 只要程序支持,可以同时显示多国文字,其他编码都无法办到,一般跨国企业的 网站都是 UTF-8 的。 我也很高兴的看到 这个论坛也是 UTF-8 的. ...
只要程序支持 GB18030 一样可以同时显示多国文字。因为 utf8 和 gb18030 都是基于 UNICODE 的。
不过 GB18030-2000 的时候,预留了藏语支持(印象里还有蒙文,当然咱们先不管预留和支持这个字眼,至少红旗在随后的某个版本里支持了藏语),但当时 utf8 因为完全基于 UNICODE ,尚不支持蒙文和藏语。
当然,现在应该 UNICODE 已经支持了。所以新版本的 utf8 和 gb18030 都应该又回到互相支持编码一样的状态了。
页: [1] 2
查看完整版本: 中文文件名乱码。何解?