找回密码
 注册
楼主: darkfire_xl

求救!

[复制链接]
发表于 2005-11-5 13:51:33 | 显示全部楼层

我跳楼之前肯定先把你推下去!
回复

使用道具 举报

 楼主| 发表于 2005-11-5 17:36:17 | 显示全部楼层
推我之前能再问个问题吗

locale的原理到底是怎样的阿.它怎么和软件配合来大道显示中文的效果?从来就没搞明白过
回复

使用道具 举报

发表于 2005-11-5 19:19:41 | 显示全部楼层
去看 i18n 的相关文档。

他是基于 glib 这个底层库来实现的。glib 根据不同的 LANG 、 LC_XXXX 等变量来实现区分当前语言。而进行对应的语言文件引用。
回复

使用道具 举报

 楼主| 发表于 2005-11-6 09:51:22 | 显示全部楼层
回复

使用道具 举报

发表于 2005-11-6 10:26:03 | 显示全部楼层

什么?
回复

使用道具 举报

 楼主| 发表于 2005-11-6 10:54:01 | 显示全部楼层
我现在将locale改成如下
export LANG=en_US.utf8
export CTYPE=zh_CN.utf8

我想问楼主几个问题
1. LANG和CTYPE有什么区别?我这样设置是因为我想默认用英文界面,只在需要县属中文的书后显示.
2.为什么zh_CN.gbk和zh_CN.utf8都能输出中文?如果mozilla中将编码改成utf8的话(原来是gbk)不是意味着不能正常显示中文了吗?但是还是能正常显示中文.
3.为什么现在系统是utf编码,但是mozilla里用的是GB编码,如果改成utf编码页面就显示乱码了
说实话关于locale一直无法理解,经管看了很多帖子,也文了不少人,但是始终没有理解它怎么和软件相配合来大道显示中文的目的.
回复

使用道具 举报

发表于 2005-11-6 13:52:24 | 显示全部楼层
LANG 是总体的。CTYPE忘了是管哪一个部分了,好象是字符的。

zh_CN.gbk 使用的是 gbk 编码,zh_CN.utf8 用的是 utf8 编码,虽然他们表示当前语言都是中文,但这两个使用的编码却不兼容。软件在写入文件和读取文件的时候,会根据当前的 locale 进行编码转换,也就是说,只要正确设置了 locale ,软件内部编码就合文件保存的编码没有关系。(虽然很多软件都不这么处理)
也就是说 X 内部使用的都是 utf8 ,但外部确按 locale 进行处理,他们之间进行一次转换就可以了,这样就保证了和旧的编码文件兼容,并且做到了对于用户透明。所以,如果 locale 是 gbk ,那么基于 gbk 编码的文本文件就会被程序转换成 utf8 进行显示,保存的时候再转换成 gbk 进行保存。如果 locale 使用 utf8 ,gbk 的文本文件会进行 utf8->utf8的转换(其实就是不转换)这样系统内部的基于 utf8 的字符处理程序就按 utf8 进行处理,而导致出现错误。

mozilla 的网页编码是针对网页文字的,因为网络上各种编码都在用,mozilla 就不能根据本地 locale 来进行转换,所以 mozilla 就根据网页文件的编码定义(网页文件里在 <header></header>中有专门的字段,web 服务器也可以给浏览器发送编码定义,但这样会覆盖 header 的定义)进行转换处理,把网页文字根据定义的编码转换后进行处理。

有的时候文字是在输出到屏幕、打印机时也要进行编码转换,但这都是对用户透明的,只有出现问题的时候才能发现文字进行了编码转换。

总体来说就是各种软件根据不同的 locale 编码定义来处理外部文字,在系统内部,就统一转换成 utf8 来处理。外部 locale ,内部 utf8 ,从而保证兼容性。
回复

使用道具 举报

 楼主| 发表于 2005-11-6 21:38:37 | 显示全部楼层
有点点意思+一点点迷茫...
如果大哥能举个例子就好了,算是给小弟上了一课。 这些别的论坛里都好像每人讲过。

谢谢!!!!!
回复

使用道具 举报

发表于 2005-11-6 21:42:25 | 显示全部楼层
我推定你了!
说!你想从哪里下去?
回复

使用道具 举报

 楼主| 发表于 2005-11-7 08:25:17 | 显示全部楼层
我先绑根绳子行吗,摔伤了医药费很贵的
回复

使用道具 举报

发表于 2005-11-7 17:28:35 | 显示全部楼层
[quote:652d3dbcdd="jiangtao9999"]去看 i18n 的相关文档。

他是基于 glib 这个底层库来实现的。glib 根据不同的 LANG 、 LC_XXXX 等变量来实现区分当前语言。而进行对应的语言文件引用。[/quote]

这里是指glibc吧,glib是GLib library,glibc是GNU C Library。前者是GTK、aRts等项目的底层接口封装,后者是整个GNU系统的底层,包含最基本的系统调用和函数实现等,前者在后者之上构建。名字很相似,但完全不是一个事物。
回复

使用道具 举报

发表于 2005-11-7 18:18:03 | 显示全部楼层
是 glibc !
我已经被他问晕了…………
回复

使用道具 举报

 楼主| 发表于 2005-11-7 20:32:43 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

GMT+8, 2025-8-7 09:56 , Processed in 0.061179 second(s), 13 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

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