【问题标题】:parsing £ in Perl on a Mac在 Mac 上用 Perl 解析 £
【发布时间】:2017-01-31 22:11:25
【问题描述】:

我试图在运行 El Capitan 的 Mac 上使用 perl 解析包含英国货币 £ 符号的行,但无法解析。理想情况下,我想用它拆分一个字符串

@Line=split("£",$Hit);

但我什至无法使用正则表达式。转义不起作用 这是 Mac 字符集问题吗?终端上的列表显示一个?代替英镑。

目标文本来自 Seamonkey 的 Composer 编写的 HTML 中的命名锚点:

<a name="word1£word2">

【问题讨论】:

  • 所以你是从文件中读取这个?文件的编码是什么?
  • 西方(ISO 拉丁语 1),但也有一些俄语文本
  • 如果您正在阅读 HTML,您很可能应该使用 HTML 解析器。此外,文件绝对不可能采用 ISO-Latin-1 格式并包含俄语(西里尔文)文本,除非它使用字符实体。那么,再次,文件的编码是什么?
  • Seamonkey 说 windows-1252 但不知道如何在 mac 上读取编码。现在让 Unicode 在 Perl 中工作(见下文),但奇怪的没有直接工作。

标签: regex macos perl osx-elcapitan


【解决方案1】:

一个简单的答案是

@Line=split("\N{U+00A3}",$Hit);

其中\N{U+00A3}£ 的Unicode。

【讨论】:

    【解决方案2】:

    请使用 utf8 pragma,因为该符号是 unicode 字符。这是示例代码。

    use strict;
    
    use utf8;
    
    my $str = qq~<a name="word1£word2">~;
    my ($first, $second) = split("£", $str);
    
    print "$first  $second\n";
    

    【讨论】:

    • 这比将£ 设为\N{U+00A3} 更有效且更具可读性!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多