编码模块和引号

Lil*_*ith 3 perl encoding utf-8

我正在抓取一个网页,并从中提取一个特定的部分.该部分包括引号(,字符146).我正在尝试将提取的数据打印到文本文件中,但是它给了我’而不是反转的逗号.我尝试过以下方法:

  • $content =~ s/’/'/g;
  • my $invComma = chr 146; $content =~ s/$invComma/'/g;
  • $content =~ s/\x{0092}/'/g;

它都没有奏效.我不能,decode('UTF-8', $content)因为它有广泛的人物.当我尝试encode('UTF-8', $content)’改变’来代替.我已经尝试use utf8过,没有效果.

我知道我的文本文件查看器可以显示引号,因为我将一个打印到测试文件并打开它.因此问题在我的脚本中.

我做错了什么,我该如何解决?

更新:我能够$content =~ s/’/'/g用简单的撇号替换它,但我仍然不知道为什么没有其他工作.我也想要一个能够解决问题的解决方案,而不仅仅是解决其中一个症状.

更新2:我被hobbs告知,这个角色实际上已经U+2019 RIGHT SINGLE QUOTATION MARK改变了我的正则表达式chr 0x2019,现在可以使用了.

hob*_*bbs 5

您尝试替换的字符在Windows-1252编码中仅为0x92/146.Perl中使用Unicode,其中该字符是U+2019 RIGHT SINGLE QUOTATION MARK,又名"\x{2019}",chr(0x2019)chr(8217).