QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3786|回复: 15

中文文件名乱码。何解?

[复制链接]
发表于 2009-2-18 18:50:39 | 显示全部楼层 |阅读模式
原先使用MagicLinux-2.0。因系统老旧,在安装Firefox3、FlashPlugin10等新软件方面遇到麻烦,不得不升级。

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

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

新系统的语言信息:

  1. [root@TFW-EL06-LP ~]# locale
  2. LANG=zh_CN.utf8
  3. LC_CTYPE="zh_CN.utf8"
  4. LC_NUMERIC="zh_CN.utf8"
  5. LC_TIME="zh_CN.utf8"
  6. LC_COLLATE="zh_CN.utf8"
  7. LC_MONETARY="zh_CN.utf8"
  8. LC_MESSAGES="zh_CN.utf8"
  9. LC_PAPER="zh_CN.utf8"
  10. LC_NAME="zh_CN.utf8"
  11. LC_ADDRESS="zh_CN.utf8"
  12. LC_TELEPHONE="zh_CN.utf8"
  13. LC_MEASUREMENT="zh_CN.utf8"
  14. LC_IDENTIFICATION="zh_CN.utf8"
  15. LC_ALL=
  16. [root@TFW-EL06-LP ~]#
复制代码
要解决问题,我需要怎么操作?我还需要提供哪些信息?谢谢。
 楼主| 发表于 2009-2-18 19:13:53 | 显示全部楼层
我刚才在Everest0.6中成功地做了一个文件名转换:

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

使用道具 举报

发表于 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/sda6  vfat 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 编辑 ]
回复

使用道具 举报

发表于 2009-2-18 20:00:14 | 显示全部楼层
locale 这个东西控制中心改不了的。。

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

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

使用道具 举报

发表于 2009-2-18 20:02:31 | 显示全部楼层
恩,那要请教高手们拉,哈哈
回复

使用道具 举报

发表于 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又是什么?
回复

使用道具 举报

发表于 2009-2-18 20:35:56 | 显示全部楼层
GB18030 是必须支持的,这个是硬性指标。
GB12345 和 GB13000 一个是 GB 系列延续的兼容编码,一个是全新的符合 unicode (或者是 iso ?忘了)标准的编码,印象里兼容 utf8 。

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

使用道具 举报

发表于 2009-2-19 05:08:33 | 显示全部楼层
我觉得放弃GB码使用UTF8码才是正道,技术落后于别人如何强制别人使用自己的一套编码,到头来还是自己找自己麻烦,国家只限制流通发行的商品发布需要支持GB码,但并不强制用户使用GB码。
回复

使用道具 举报

发表于 2009-2-19 08:31:21 | 显示全部楼层
gb2312/gbk/gb18030主要是向前兼容,gb13000和其它gb系列不兼容,所以现在基本是没人用的。
编码和技术没什么关系,gb主要是历史遗留问题。

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

使用道具 举报

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

使用道具 举报

发表于 2009-3-5 13:26:52 | 显示全部楼层
原帖由 jiangtao9999 于 2009-2-19 09:43 发表
GB和UTF8效果功能一样的,,不分谁先进谁落后,如果硬要说先进GB系列应该更符合要求。
都基于UNICODE。都不能完整覆盖需要的字符。不过GB是自己的,添加未支持的字符方便。而且向前兼容,用UTF需要完全转码,而且自己不能强行添 ...


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

使用道具 举报

发表于 2009-3-5 15:49:55 | 显示全部楼层
原帖由 beter_hans 于 2009-3-5 01:26 PM 发表


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

只要程序支持 GB18030 一样可以同时显示多国文字。因为 utf8 和 gb18030 都是基于 UNICODE 的。
不过 GB18030-2000 的时候,预留了藏语支持(印象里还有蒙文,当然咱们先不管预留和支持这个字眼,至少红旗在随后的某个版本里支持了藏语),但当时 utf8 因为完全基于 UNICODE ,尚不支持蒙文和藏语。
当然,现在应该 UNICODE 已经支持了。所以新版本的 utf8 和 gb18030 都应该又回到互相支持编码一样的状态了。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-23 11:17 , Processed in 0.051080 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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