光辉 的个人资料胡言乱语照片日志列表更多 工具 帮助
2008/7/18

设置Ubuntu的本地环境

 
 
Ubuntu的locale命令
 
在Ubuntu中输入locale命令可以查看系统的本地环境设置。在我的机器上运行locale命令,结果如下:
 
LANG=zh_CN.GBK
LANGUAGE=zh_CN:zh
LC_CTYPE="zh_CN.GBK"
LC_NUMERIC="zh_CN.GBK"
LC_TIME="zh_CN.GBK"
LC_COLLATE="zh_CN.GBK"
LC_MONETARY="zh_CN.GBK"
LC_MESSAGES="zh_CN.GBK"
LC_PAPER="zh_CN.GBK"
LC_NAME="zh_CN.GBK"
LC_ADDRESS="zh_CN.GBK"
LC_TELEPHONE="zh_CN.GBK"
LC_MEASUREMENT="zh_CN.GBK"
LC_IDENTIFICATION="zh_CN.GBK"
LC_ALL=

可以通过以下方式修改Ubuntu的本地环境:
 
1) cd  /etc/default/  可以看到这个目录下有一个locale文件。
2) vim locale  在我的Ubuntu上打开locale文件,可以看到下面的内容:
    LANG="zh_CN.GBK"
     LANGUAGE="zh_CN:zh"
3) 可以通过修改LANG和LANGUAGE的值来修改本地环境。假设修改为UTF-8编码的英文:
    LANG="en_US.UTF-8"
     LANGUAGE="en_US:en"
4) 退出系统重新登录并运行locale命令,可以看到本地环境已经改变。

注意:如果在第三步中将locale文件的内容全部删除,使其成为空文件,那么在第四步中将看到本地环境被设置为POSIX。

Ubuntu的locale-gen命令

local-gen用来生成一系列的locale定义文件,Ubuntu正是根据这些文件来确定相应的locale格式。locale-gen会根据目录/var/lib/locales/supported.d/下的local文件生成相应的一系列locale文件。生成的文件默认存放在/usr/lib/locale/目录下。

在我的机器上/var/lib/locales/supported.d/local这个文件的内容为下:
 
   en_US.UTF-8 UTF-8
    zh_CN.GBK GBK
当运行命令locale-gen之后,将会在/usr/lib/locale/目录下生成两个文件夹en_US.utf-8和zh_CN.gbk,这两个目录中包含了相应的一系列locale文件。

如果想让我的Ubuntu支持zh_CN.UTF-8,那么需要按照以下步骤进行操作:
1) 修改文件
/var/lib/locales/supported.d/local,在其中添加一行zh_CN.UTF-8 UTF-8
2) 使用管理员帐户运行locale-gen命令,运行完之后将在
/usr/lib/locale/目录下发现一个新的文件夹zh_CN.utf-8
这样我的Ubuntu系统就获得了支持zh_CN.UTF-8的能力,然后可以按照前面所说的方法修改文件/etc/default/locale中的LANG和LANGUAGE变量值为zh_CN.UTF-8和zh_CN:zh并重新登录Ubuntu就可以转换到zh_CN.UTF-8的本地环境中。

Ubuntu支持的所有locale

文件/usr/share/i18n/SUPPORTED中列出了Ubuntu支持的所有locale。如果要使用这个文件中列出的某个locale,必须先通过locale-gen生成相应的一系列定义文件。

应用

由于windwos的命令行工具cmd只支持GBK的编码方式,而Ubuntu的默认安装一般支持的是UTF-8的编码方式,所以在cmd中使用telnet登录Ubuntu就会产生部分乱码问题。可以通过上面介绍的命令将Ubuntu的locale设置为zh_CN.GBK,从而解决乱码问题。

小结

主要的几个文件和目录:
/etc/default/locale
/var/lib/locales/supported.d/local

/usr/lib/local/
/usr/share/i18n/SUPPORTED

有关locale和locale-gen的更多信息,请直接man。


 

2008/7/12

对PHP的一点想法

 
目前的web开发基本都是使用基于MVC模式的开发框架。作为web开发中的主力军,PHP也有着各种不同的开发框架。特别是在Rails出现以后,出现了不少的PHP开发框架,有完全模仿rails的CakePHP,有官方开发的ZendFramework,还有国内的FleaPHP等等。
 
PHP的设计初衷就是为了方便web开发,针对web开发中的各种常见的需求PHP都有内置的函数帮助我们实现。而使用MVC模式进行开发已经成为了一种web开发中的常见需求,所以考虑是否可以直接在PHP语言中支持MVC模式的开发,而不是通过各种框架来支持MVC。
 
大概说来,需要内至于PHP语言中的有Model和Controller两个模块,至于View就是直接使用PHP实现的页面。这样带来的好处就是程序员无需学习掌握各种复杂繁琐的框架,直接内至于PHP语言中的Model和Controller也会有更好的性能表现。但是,这样也会带来灵活性上的限制。
 
忽然想到:其实浏览器中可以内在地支持人机交互,不要再编写复杂的javascript代码来搞人机交互了。可以提供一种类似于HTML,CSS这样的语言来设置用户的动作以及响应。