Bin Joy's Blog

There is more than one way to do it...

[翻译] Unicode 与 Perl

Perl Weekly 第109期的主题是 “Unicode and Perl”,其中推荐了两篇关于 Unicode 的博文。一篇来自 perlhacks.com 的 Dave Cross,另一篇则来自重量级人物 Tatsuhiko Miyagawa(宫川达彦)。非常有趣的是两个博主都在博文最后引用了对方博文的地址。

这两篇博文虽说都是关于 Unicode 的,但是风格不尽相同。Dave Cross 的文章很短,就是给出了一个快速测试题,并称几天后会给出相关答案。但宫川的文章则是相对详细的示例分析和总结。

其实笔者在 2011 年自从读了 Effective Perl Programming 一书中关于 Unicode 的部分后感觉对 Perl 的 Unicode 问题已经明晰了很多,但是在日常编程中偶尔也会被编码问题困扰。比如最近在使用 Dancer 的过程中就遇到此类问题。看来编码这个问题一定要彻底搞清楚才可以。所以在阅读学习两篇博文的同时尽力做了翻译,以便有这方面学习需要的同学可以更快的理解。

两篇文字都会翻译,先翻译 Dave Cross 这篇短的。

正文

原文地址:http://perlhacks.com/2013/08/unicode-perl/

在过去几天我就遇到好几拨讨论,很显然有些人对于 Perl 如何处理 Unicode 还不甚了了。这篇文档条理清晰内容详实(这里还有一个不错的教程),但不知何故,人们仍旧会陷入误区。

下面是一个快速小测验。你能详细的说明这四个命令行程序的来龙去脉吗?为了取得一个好的绩效考核,在我们的代码中应该效仿哪一个呢?

1
2
3
4
5
6
7
8
$ perl -E'say "£"'
£
$ perl -Mutf8 -E'say "£"'
$ perl -C -E'say "£"'
£
$ perl -C -Mutf8 -E'say "£"'
£

为了统一环境,假设系统 locale 都设置为 en_US.UTF-8。

几天后我会公布详解。

更新:巧合的是, Miyagawa 在他的 blog 也发了一些非常相似的内容

译注:可以看我的译文 查看 另我查看了 perlhacks 的博客,并没有公布答案,其实看了宫川达彦的那篇后,也许你就不纠结他没有公布答案了:)

Comments