LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1345|回复: 14

关于UTF8的locale的问题?

[复制链接]
发表于 2006-2-22 19:13:10 | 显示全部楼层 |阅读模式
在Linux设置locale选择utf8编码有很多种,比如zh_CN.utf8、en_US.utf8,难道utf8这个编码还有很多种吗?如果不是那么他么的区别是什么?

locale设置是区分大小写的吗?比如zh_CN.utf8可以写成zh_cn.utf8吗?还有就是看到有的设置utf8是写成小写,有的写成大写UTF8,这个有区别吗?对系统使用有没有影响?

我要使用中文的系统loclae的选择有很多,比如gb2312、gbk、gb18030、utf8都可以,那么选那个好点呢?刚才了解到utf8表示中文需要3个字节,gb2312、gbk等只需要2个字节,从这个角度上说是不是选择gbk要好点呢?而且windows用户用的都是gb编码、下载的音乐等的tag也是gb编码,如果用utf8的话,不转换编码就会显示成乱码,这样的话是不是更应该选择gbk编码了呢?如果象我说的那样为什么这么多人不用gbk而要用utf8呢?用utf8有没有什么特别的好处呢?

另外,既然有了unicode,现在用两个字节基本上就能包括世界上所有主流的语言,为什么又发明出utf8来呢?看他的编码方法,一个字节到底代表什么还需要解析一番、要判断一个字符串有多少个字符还需要遍历一下吧,这要效率不是大打折扣吗?干嘛发明这个呢?

最后,Linux对编码的支持是在那一层实现的?好像是glibc,是不是他内部还是全部转换成unicode来处理的?
发表于 2006-2-22 19:28:26 | 显示全部楼层
我也一直都想问下locale的问题,希望哪位能够说说~~~
回复 支持 反对

使用道具 举报

发表于 2006-2-22 19:39:52 | 显示全部楼层
我也不太明白.....
回复 支持 反对

使用道具 举报

发表于 2006-2-22 19:41:24 | 显示全部楼层
用 UTF8 的好处是,不管你用的是什么语言,都可以把所有的文字显示出来。

比如你用法语的界面,一样可以同时显示简体中文和繁体中文。主要是这个好处,不需要转换。

zh_CN.UTF-8
en_US.UTF-8
aa_BB.UTF-8
基本就没有区别了,除了界面上的表示。

MP3的名字问题,xmms/bmp 这些都提供了转换,不用担心的。。

如果是为了和Windows的兼容,mount的时候的参数就解决了。

当然,我这里的解释很简单。还是需要自己用一下才知道。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-22 19:51:23 | 显示全部楼层
是不是zh_CN.utf8前面的zh_CN用来帮助软件实现本地化?
好像有个什么函数然后查个什么表,在不同的locale下显示不同的字符,我也说不清。

写locale时到底是UTF-8还是utf8,有没有区别?
回复 支持 反对

使用道具 举报

发表于 2006-2-23 04:27:03 | 显示全部楼层
UTF-8,utf8也许也可以认吧,系统有些alias的,会猜测的,utf8 utf-8之类应该都能识别,没试验过。

UTF-8好处很多,尤其是对程序员来说。unicode是一个标准,有多种编码方案,比如windows用的双字节编码,处理起来就比较简单。问题是传统的字符处理都是单字节的,如果使用双字节编码,就要使用双字节的字符处理函数,这个还是很麻烦的。而且很多西方语言单字节就可以表示了,如果对所有的字符都用双字节,无疑是很大的浪费。utf-8表示中文确实要多占空间,但是处理起来却比较方便,很多时候都可以使用普通的字符处理函数。

gb2312 gbk这些只是中文的编码方案,扩展性不好,不兼容其他语言。处理起来也比unicode还要麻烦。
回复 支持 反对

使用道具 举报

发表于 2006-2-23 04:41:28 | 显示全部楼层
Post by ifree
是不是zh_CN.utf8前面的zh_CN用来帮助软件实现本地化?
好像有个什么函数然后查个什么表,在不同的locale下显示不同的字符,我也说不清。

写locale时到底是UTF-8还是utf8,有没有区别?


没错,是前边决定显示什么语言。这个不清楚,不过相信是有的。有点类似 Java 中的 Resource Bundle,如果你知道的话。

locale 里边一般写 UTF-8 比较准确。
回复 支持 反对

使用道具 举报

发表于 2006-2-23 10:05:10 | 显示全部楼层
blogsearch.google.com
搜索 i18n zhllg
回复 支持 反对

使用道具 举报

发表于 2006-2-23 10:14:02 | 显示全部楼层
Post by 终极幻想
没错,是前边决定显示什么语言。这个不清楚,不过相信是有的。有点类似 Java 中的 Resource Bundle,如果你知道的话。

locale 里边一般写 UTF-8 比较准确。

google "normalized locale code"
很多时候locale code都会被normalize,这时UTF-8会变成utf8
所以我一般在环境变量里直接写utf8
回复 支持 反对

使用道具 举报

发表于 2006-2-23 11:38:30 | 显示全部楼层
gbxx码没有希腊字符 没有德语字符 。。。 根本不能用

unix linux 上有很多单字节的特殊字符,用固定长度的unicode编码会出乱子,UTF-8 这方面很完美

现在电脑的容量速度无所谓变长字节的编码

windows 内部是unicode 但是跟用户交互的部分是地区编码,商业公司需要向后兼容,没办法。windows在每个语言区都有特定的版本,linux只有一个版本,所以保存文件等用unicode比较合适

中国还比较封闭,一般人都认为只要能显示简体中文就可以了,所以unicode不普及
回复 支持 反对

使用道具 举报

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

本版积分规则

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