QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3598|回复: 20

求助:mount utf-8的ext2分区乱码

[复制链接]
发表于 2006-6-2 22:31:40 | 显示全部楼层 |阅读模式
我有一个ext2分区,上面的文件是在local为utf-8的系统下创建的,而我现在是用的Magic Linux 2.0.1,默认local的LANG=GB18030,于是我在mount那个ext2分区时,中文变成了乱码,请问我怎样才能看到正常的中文呢?
发表于 2006-6-2 23:27:09 | 显示全部楼层
要么把locale从GB18030改成UTF-8;要么用convmv把文件系统从UTF-8改成GB18030。

当然要是只想临时查看还是有其他方法的。
回复

使用道具 举报

发表于 2006-6-3 10:43:55 | 显示全部楼层
把/etc/sysconfig/i18n里改成UTF8
把fstab的iocharset 改成iocharset =utf8
回复

使用道具 举报

 楼主| 发表于 2006-6-3 13:15:58 | 显示全部楼层
谢谢,我按照上面的建议试了好几次,最后的解决办法其实只是修改 /etc/syscofig/i18n,原内容如下:
LC_ALL=zh_CN.GB18030
LANG=zh_CN.GB18030
LC_ALL=zh_CN.GB18030
LANG=zh_CN.GB18030

就这4行,我把下面两行里的GB18030改成UTF-8,其他的比如 /etc/fstab,以及local,都不改,就可以了。可能 i18n 这个文件的作用是可以支持多种编码,如果在那4行下面再添加别的编码,就可以支持更多编码了吧,明白人请指教,
回复

使用道具 举报

 楼主| 发表于 2006-6-3 13:56:12 | 显示全部楼层
不对,我又看了一下,其实上面的改法就是改了local,结果其它原先按挂载的windows分区又乱码了,因为magic linux用fsautomount是按iocharset=gb2310 挂载的,于是又把他们改成utf8,这样一来不还是全都改成utf8了吗?昨天刚看了版主关于magic linux为什么使用GB18030作为local的文章,今天就这样了 ,如果想保持local为GB18030,该怎么办呢?
回复

使用道具 举报

发表于 2006-6-3 14:01:07 | 显示全部楼层
不改locale的话就用convmv把文件系统的编码从UTF-8改成GB18030。
回复

使用道具 举报

发表于 2006-6-3 19:19:22 | 显示全部楼层
你有想用utf8又想用gb18030,现在的linux发行版多半用utf8,估计以后也必须国际化utf8,因为要想做国际发行版必须utf,不然不好转化,windows就是个例子
回复

使用道具 举报

发表于 2006-6-3 19:45:26 | 显示全部楼层
[quote:cfdbf82bb6="qdzhuang"]你有想用utf8又想用gb18030,现在的linux发行版多半用utf8,估计以后也必须国际化utf8,因为要想做国际发行版必须utf,不然不好转化,windows就是个例子[/quote]
改用英语,废除中文才是中国走向国际的唯一出路。
回复

使用道具 举报

发表于 2006-6-3 20:18:19 | 显示全部楼层
好不容易扫盲成功,又要eng大于60岁的没希望了,国家的文化还是要坚持,编码方式只不过是解决方案,gb18030更注重中国本地化,而utf更注重与世界接轨通用性
在就是linuxsir上一篇文章说gb18030更想是慌忙制定的产物
回复

使用道具 举报

发表于 2006-6-3 21:01:53 | 显示全部楼层
在就是linuxsir上一篇文章说gb18030更想是慌忙制定的产物

因为不够用了。
没办法只能出 18030 了,唉当时借机会废除中文多好,省得到处都骂 GB18030 ,盛赞 utf8 。
回复

使用道具 举报

发表于 2006-6-3 21:05:49 | 显示全部楼层
我连 GB18030 & UTF-8 大概是怎么运行的都不知道,所以在这个问题上,我被沉默了  
回复

使用道具 举报

发表于 2006-6-3 21:20:49 | 显示全部楼层
[quote:d336f2ee3a="heyuqi"]我连 GB18030 & UTF-8 大概是怎么运行的都不知道,所以在这个问题上,我被沉默了  [/quote]
现在系统内部处理一律 UTF8 。
外围读写在中国主要是 GB18030 (向下兼容 20 多年前的 GB2312 )。

现在问题出在:
系统不会进行自动编码转换处理(成功率太低),很多程序需要自己读取的时候 locale -> utf8 ,写入的时候 utf8 -> locale (虽然本来这不是应用软件的工作)。
但如果程序忘了转换,本地编码就会混乱(比如 amarok ,删了转换功能,非让 taglib 处理,但 taglib 却不管)。
但如果 locale 是 utf8 ,locale <-> utf8 就又出了问题,成了 utf8 <-> utf8 。不是 gb 了(用国外发行半的结果)。
之后是某些程序设计,他们一律使用 utf8 (但却忘了世界上不光有 utf8)导致程序间交互混乱(apache 没设置好就这样)。
之后就是跨国数据交换,西方一个编码,中国一个编码,日本一个编码,韩国一个编码,台湾一个编码,俄罗斯一个编码………………………………
之后程序因为不可能正确识别,导致继续混乱…………
之后还有国内编码不统一,有用 GB 的,有用 utf 的,还有 iso8859 的(这到好点,反正就只能包含128字符,扩展的那 128 基本不用,可以支持任何一个编码)

编码彻底混乱……………………
所以我建议用英语,iso8859 的 128 字符足够用了,你们爱用什么编码,一律全都支持 iso8859 ……………………
回复

使用道具 举报

发表于 2006-6-4 12:02:26 | 显示全部楼层
其实本地化还是要做的,只是要有一个在开发上有好的解决方案,不然MS在中国还搞什么研究院干什么,人家MS在美国都重视本地化,中国人自己更要重视
回复

使用道具 举报

发表于 2006-6-4 14:33:40 | 显示全部楼层
如果你读取的那个分区使用 utf-8,只要修改 /etc/fstab 对应分区的编码,从 gb18030 到 utf-8,重启即可。

若不想重启,可以关闭所有程序,卸载那个分区,重新挂载即可。
umount -a
mount -a
回复

使用道具 举报

 楼主| 发表于 2006-6-4 15:22:23 | 显示全部楼层
[quote:a656fd7d13="KDE"]如果你读取的那个分区使用 utf-8,只要修改 /etc/fstab 对应分区的编码,从 gb18030 到 utf-8,重启即可。
[/quote]

怎么改呢?我这块分区的文件系统是ext2,和vfat一样吗?象这样?:
/dev/hda1   /mnt/hda1   ext2 iocharset=cp936,umask=0,exec 0 0

我仿照着vfat分区改的,没成
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-24 19:10 , Processed in 0.046639 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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