【发布时间】:2019-01-31 01:44:12
【问题描述】:
我在我的 perl 程序中使用 utf8,我有以下代码行:
$$pstring =~ s/\xA0/ /g;
应该从字符串中清除非中断空格。
在 Ubuntu 16.04 和 perl v5.22.1 下这不是问题,但在 Ubuntu 14.04 和 v5.18.2 下我收到此错误:
格式错误的 UTF-8 字符(致命)
然后我检查了我试图匹配的字符串,发现里面有不间断的空格,可以被正则表达式删除
$$pstring =~ s/[\xC2\xA0]/ /g;
但没有
$$pstring =~ s/\xC2\xA0/ /g;
我的问题是:最后两者有什么区别(为什么它只适用于括号),还有其他方法可以解决这个问题吗?
【问题讨论】:
-
use diagnostics -
Re "
$$pstring",你为什么要引用一个标量?这可能是合法的,但很奇怪 -
实际上我的字符串中有两个后续的 \xA0 字符.. $$pstring =~ s/\xA0+/ /g;修好了。