分页: 1 / 1

关于OB的 locale

发表于 : 2011-12-29 14:49
unreal
http://www.gobsd.org/showthread.php?p=6721 这个帖子里谈到OB的locale支持问题,为此专门发在这里。

OB的locale 与 FB/NB 的locale 是一回事么?说OB不支持locale,但具体设置上不是与FB/NB很类似么?都是设置 LC_*** 的环境变量。在线manual:
locale(3p) Perl Programmers Reference Guide locale(3p)

NAME
locale - Perl pragma to use and avoid POSIX locales for built-in
operations

SYNOPSIS
@x = sort @y; # ASCII sorting order
{
use locale;
@x = sort @y; # Locale-defined sorting order
}
@x = sort @y; # ASCII sorting order again

DESCRIPTION
This pragma tells the compiler to enable (or disable) the use of POSIX
locales for built-in operations (LC_CTYPE for regular expressions, and
LC_COLLATE for string comparison). Each "use locale" or "no locale"
affects statements to the end of the enclosing BLOCK.

See perllocale for more detailed information on how Perl supports
locales.

perl v5.12.2 July 20, 2011 locale(3p)
求高人解惑:confused:

回复: 关于OB的 locale

发表于 : 2011-12-30 7:05
leo
unreal 写了:http://www.gobsd.org/showthread.php?p=6721 这个帖子里谈到OB的locale支持问题,为此专门发在这里。

OB的locale 与 FB/NB 的locale 是一回事么?说OB不支持locale,但具体设置上不是与FB/NB很类似么?都是设置 LC_*** 的环境变量。在线manual:

求高人解惑:confused:
FAQ上有新增的内容,看这里:
http://www.openbsd.org/faq/faq10.html#locales

没注意FreeBSD和NetBSD里的相关内容,等待知道的兄弟指教吧。:o

回复: 关于OB的 locale

发表于 : 2011-12-30 15:48
levi
严格意义上来说,不是OpenBSD不支持locale,而是对locale的支持(准确地说是OpenBSD的libc库对locale的支持)不够。因为libc库的问题,三种BSD对locale的支持都不够好,FreeBSD相对最好但也有些问题;相比较而言,Linux所用的Gnu libc库对locale的支持就比较完善。

完整的locale包括了12个大类的分类属性,也即12个LC_*,另外还有LC_ALL和LANG这两个变量。
在类unix系统上locale的设置一般是调用setlocale来实现的,而目前的OpenBSD的setlocale机制只支持对LC_ALL,LC_COLLATE,LC_CTYPE,LC_MONETARY,LC_NUMERIC以及LC_TIME进行设置。对其他属性尤其是LANG的设置是不支持的。系统默认的locale是POSIX也即C,除了LC_CTYPE可以由用户手动更改属性值以外,其他属性不能更改其值。(LC_MESSAGES情况比较特殊,他的设置不依赖setlocale,也可以由用户手动更改。)所以,对于OpenBSD来说,基本上只有LC_CTYPE(以及LC_MESSAGES)可供用户自己设置,其他的都只能用系统默认值。

最早的OpenBSD完全不支持locale,OpenBSD2.9实现了对ISO-8859-1的部分支持(主要限于LC_CTYPE),最近一、两年又实现了对UTF-8(Unicode)locale的部分支持(也是主要限于LC_CTYPE),至于像zh_CN.GB2312,zh_CN.GB18030,zh_TW.Big5等常见中文locale则完全不支持。

建议参考setlocale,mklocale的manpage

回复: 关于OB的 locale

发表于 : 2011-12-30 16:42
wkx9dragon
我刚才看了一下我的netbsd 5。1 和 freebsd 9。0RC 版的locale -m 没有一个支持utf-16,utf-32 的,3大bsd对UTF的支持都有限呀!中文有钱有闲有才有奉献牛人太少了。我发现日本在这方面走在中国的前面了。

回复: 关于OB的 locale

发表于 : 2011-12-30 22:10
levi
wkx9dragon 写了:我刚才看了一下我的netbsd 5。1 和 freebsd 9。0RC 版的locale -m 没有一个支持utf-16,utf-32 的,3大bsd对UTF的支持都有限呀!中文有钱有闲有才有奉献牛人太少了。我发现日本在这方面走在中国的前面了。

日本对BSD乃至整个国际科学技术界的参与程度确实比咱们强了不是一点半点,三种BSD对IPv6的支持,主要都是基于日本学术界的KAME项目的成果,三种BSD的committer中日本人的数量也要比国人多得多。

回复: 关于OB的 locale

发表于 : 2011-12-30 23:02
unreal
楼上各位仁兄,小弟受教,一并谢过!