0

我已经搜索过这个问题,但所有的讨论都是围绕如何从字符串中删除“零宽度非连接符”字符或将其替换为标准空格。所以,我知道如何在给定的字符串中检测和删除它。现在我的问题是如何在 perl 中打印这个字符串?我知道如何在 Python 和 ruby​​ 中做到这一点,但它在 perl 中不起作用。在红宝石中,我曾经简单地通过以下方式做到这一点:

mystring.gsub!(/\s+/,'<200c>')

它工作正常。但是按照 Perl 中的相同方式,它不起作用。实际上我已经尝试了以下方法,但它没有返回正确的输出:

$mystring =~ s/\s+/\x{200C}/g;

关键是我可以在 Perl 中检测到这个字符,但我不能打印它。关于这个问题的任何想法?

4

1 回答 1

1

为了正确写入包含 utf8 序列的字符串,您应该binmode()在该流上使用。我建议你尝试的是binmode( STDOUT, ':utf8' );然后打印字符串。该length( $mystring )函数可以帮助您判断字符串是否包含比可见字符更多的字符并验证替换是否成功。

于 2013-10-18T14:29:37.007 回答