文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>1.5 使用命名Unicode字符

1.5 使用命名Unicode字符

时间:2006-12-27  来源:xiaoshengcaicai

1.5 使用命名Unicode字符

1.5.1 问题

你想在代码里面通过Unicode字符的名字来使用一些奇怪的字符,而无需为那些奇怪字符的Unicode编码是多少而烦恼。

1.5.2 解决方案

先在程序开头写上use charnames,然后在程序的字符串里面就可以自由地插入"\N{CHARSPEC}" 这样的转义来使用那些字符。

1.5.3 讨论

use charnames 这行宏编译指令使你可以使用Unicode字符的名字(symbolic names)。你访问的这些双引号引起来的\N{CHARSPEC}其实是编译时常量。它支持几个子宏编译指令: :full子宏编译指令让你可以而且必须使用完整的字符名字来访问Unicode字符,完整的字符名字得跟Unicode字符数据库里面的名字(包括大小写)完全一样才行。:short子宏编译指令带来方便的缩写。没有冒号的子宏编译指令会被当成一组数据的名字,给访问这组数据带来快捷(注意访问时大小写敏感)。(Any import without a colon tag is taken to be a script name, giving case-sensitive shortcuts for those scripts.)

use charnames ':full';
print "\N{GREEK CAPITAL LETTER DELTA} is called delta.\n";

D is called delta.

use charnames ':short';
print "\N{greek:Delta} is an upper-case delta.\n";

D is an upper-case delta.

use charnames qw(cyrillic greek);
print "\N{Sigma} and \N{sigma} are Greek sigmas.\n";
print "\N{Be} and \N{be} are Cyrillic bes.\n";

S and s are Greek sigmas.
500)this.width=500;" border="0">and 500)this.width=500;" border="0">are Cyrillic bes.

charnames::viacode 跟 charnames::vianame这2个函数可以转换Unicode的数字编码(code point)跟它对应的长名。Unicode的文档使用了U+XXXX这样的符号来表示code point=XXXX的Unicode字符。所以我们下面这个例子也是以这样的方式输出:

use charnames qw(:full);
for $code (0xC4, 0x394) {
printf "Character U+%04X (%s) is named %s\n",
$code, chr($code), charnames::viacode($code);
}

Character U+00C4 (Ä) is named LATIN CAPITAL LETTER A WITH DIAERESIS
Character U+0394 (D) is named GREEK CAPITAL LETTER DELTA

use charnames qw(:full);
$name = "MUSIC SHARP SIGN";
$code = charnames::vianame($name);
printf "%s is character U+%04X (%s)\n",
$name, $code, chr($code);

MUSIC SHARP SIGN is character U+266F (#)

下面是怎样找到Unicode字符数据库在Perl里面的一个副本:

% perl -MConfig -le 'print "$Config{privlib}/unicore/NamesList.txt"'
/usr/local/lib/perl5/5.8.1/unicore/NamesList.txt

从这个文件你可以得到对你有用的Unicode字符名字。

1.5.4 参阅

The charnames(3) manpage 和  Programming Per 第31章; the Unicode Character Database at http://www.unicode.org/

相关阅读 更多 +
排行榜 更多 +
我要当超人

我要当超人

休闲益智 下载
幸存者的命运

幸存者的命运

飞行射击 下载
精英战区3d

精英战区3d

飞行射击 下载