在Perl中编写支持Unicode的单行程序
发布时间:2020-12-15 21:19:14 所属栏目:大数据 来源:网络整理
导读:在Perl中编写Unicode感知单行的正确方法是什么?明显的方法: $ echo 'フーバー' | perl -lne 'print if /フ/' フーバー …似乎一见钟情,但这只是一个意外:Unicode被解释为字节,如下例所示: $ echo 'フーバー != フウバー' | perl -mString::Diff=diff -
在Perl中编写Unicode感知单行的正确方法是什么?明显的方法:
$ echo 'フーバー' | perl -lne 'print if /フ/' フーバー …似乎一见钟情,但这只是一个意外:Unicode被解释为字节,如下例所示: $ echo 'フーバー != フウバー' | perl -mString::Diff=diff -lne 'print join(" ",diff($1,$2)) if /(.*)!=(.*)/' => 29 フ?[??]バー[ ] { }フ?{??}バー 只需使用-C标志将STDIN / STDOUT等设置为UTF-8本身是不够的: $ echo 'フーバー' | perl -C -lne 'print if /フ/' [no output] 因为现在-e中的文本不会被解释为Unicode。 这就是这样的方式(假设一个理智的LOCALE – 就是这样一个形式“* .UTF-8”): $ perl -C -Mutf8 [...] 解决方法
是的,加载
utf8 pragma需要将源代码中的“フ”UTF-8序列解释为字符,而不是单独的字节。
Perl -C命令行开关和utf8 pragma与区域设置无关,但shell的echo命令不是。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |