【发布时间】:2015-09-25 14:37:44
【问题描述】:
我正在尝试用空格替换一些解码字符(例如 \x{2013}、\u{38} 等)。以下是我使用的正则表达式。但我收到Wide character 错误或打印消息中的某些字符仍未正确解码。我认为它与表达式不匹配,我尝试了不同的方法。我想要所有那些带有空格或 - 的解码字符。请在下面找到我的非工作代码:
use strict;
use warnings;
my $sai = qq(Asdf \\u2013abc<br />jkl-abcd<br /><div>!\\"\\u00A3$%^&*()-_ =+</div><div>{</div><div>}</div><div>[</div><div>]</div><div>: ; @ \' # ~*,,</div><div>? > < . , / | \\\\ ` /* - + . </div><div> </div><div> 12345</div><div> </div><ul><li><span obj=\\"venit-rte-obj-026f68485\\">\\u00FC<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Abcd</li><ul><li><span obj=\\"venit-rte-obj-026f68485\\">v<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Abcd</li><li><span obj=\\"venit-rte-obj-026f68485\\">v<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Jkl</li><ul><li><span obj=\\"venit-rte-obj-0a7a49fef\\">\\u00B7<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Asdf</li></ul><li><span obj=\\"venit-rte-obj-026f68485\\">\\u00A7<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>test</li></ul></ul><div> </div><div> </div><div><ul><li><span obj=\\"venit-rte-obj-026f68485\\">\\u00D8<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Dfgst</li><li><span obj=\\"venit-rte-obj-026f68485\\">\\u00D8<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Sdrgdg</li><ul><li><span obj=\\"venit-rte-obj-0a7a49fef\\">\\u00B7<span obj=\\"venit-rte-obj-0196185f4\\"> </span></span>Abcd</li></ul></ul>Testing \\u2013 code</div> \x{2013};\x{2013}abcjkl-abcd!\"\x{a3} \$%^&*()-_=+{}[]: ;\@ ' # ~*,,? > AbcdTesting \x{2013} code670123456789 \x{fc} Abcdv Abcdv Jkl\x{b7} Asdfs\x{a7} test \x{d8} Dfgst\x{d8} Sdrgdg\x{b7});
for ($sai)
{
s/[^\p{ASCII}]//g;
s/\\u[0-9]+/-/g;
s/\\x[a-z0-9]/-/g;
}
print $sai;
现在只有 x{d8} 等没有消失
【问题讨论】:
-
添加
use utf8;。