【问题标题】:Perl unicode hash key lookupPerl unicode 哈希键查找
【发布时间】:2012-10-31 14:42:18
【问题描述】:

perl 中的 unicode 和 unicode 让我很困惑。

我从 MySQL 数据库中得到了这个哈希值。

my $hashFromDB = { "Ves\x{101}kha" => "some value" };

但我只知道这种符号形式的密钥

my $key = "Ves\u0101kha";

如何将 \uXXXX 表示法转换为 \x{xxx} 以便我可以使用密钥获取值。

谢谢。

【问题讨论】:

    标签: perl unicode


    【解决方案1】:

    \x{}escape 在 Perl 中的工作方式几乎与 \uescape 在 JS 中一样。您只需在 {} 中使用代码,就像在您的第一个 sn-p 中一样:

    my $key = "Ves\x{101}kha";
    my $value = $hashFromDB->{$key};
    

    如果您有带有\u 的文字字符串,我认为这意味着“\u 后跟 4 个十六进制数字以形成代码点编号”,只需使用正则表达式对其进行预处理,它将用具有相同代码的真实字符替换此类序列:

    $key =~ s/\\u([a-fA-F0-9]{4})/chr(hex($1))/ge;
    

    顺便说一句,\u 在 Perl 中有不同的含义 - 它大写下一个符号。你可以check complete list of escapes in documentation

    【讨论】:

    • 您好,感谢您的回复,但如果我知道该键为“Ves\x{101}kha”,我已经没有问题了。但我只知道在 \uXXXX 中,所以唯一的方法是使用正则表达式将其转换为 \x{} ?如果是这样,是否有一个库/内置函数可以做到这一点?谢谢
    猜你喜欢
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多