1

我对 perl 中的 unicode 和 unicode 感到非常困惑。

我从 MySQL db 得到了这个哈希值。

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

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

my $key = "Ves\u0101kha";

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

谢谢。

4

1 回答 1

3

\x{}Perl 中的 escape 几乎与\uJS 中的 escape 一样。您只需使用里面的代码{},就像在您的第一个片段中一样:

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 中有不同的含义 - 它大写下一个符号。您可以在文档中查看完整的转义列表

于 2012-10-31T15:00:12.347 回答