【发布时间】:2017-12-19 15:54:04
【问题描述】:
我在 perl-5.24 上,偶然发现 \b 不知道 unicode:
$ echo '""test"" ""тест""' | perl -pe 's/""\b/“/g'
“test"" ""тест""
如我所料,“test"" “тест""。
然后我了解了 perl-5.22.1 正则表达式中的 unicode 扩展,特别是这个:\b{wb}。但是使用这些扩展我仍然得到错误的结果:
$ echo '""test"" ""тест""' | perl -pe 's/""\b{wb}/“/g'
“test“ “тест“
正如我预期的那样,“test"" “тест""。
我的问题是:我应该通过 perl 正则表达式将 ""test"" ""тест"" 转换为 “test"" “тест"" 吗?
【问题讨论】:
-
@ikegami:是的,我正在通过 UTF-8。但现在世界不是主要是 UTF-8 吗?
-
不,世界使用解码的文本(
String而不是byte[]、Readers 而不是Streams 等)。这样,它们与编码无关,而且它们可以更简单,因为它们不担心字符的编码宽度。