1

私はperlのユニコードとユニコードにとても混乱しています。

このハッシュはMySQLデータベースから取得しました。

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

しかし、私はこの形式の表記法の鍵しか知りません

my $key = "Ves\u0101kha";

その\uXXXX表記をその\x{xxx}に変換して、キーで値を取得できるようにするにはどうすればよいですか。

ありがとう。

4

1 に答える 1

3

\x{}\uPerlでのエスケープは、JSでのエスケープとほぼ同じように機能します。{}最初のスニペットとまったく同じように、内部のコードを使用するだけです。

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

「\uの後に4桁の16進数を続けてコードポイント番号を形成する」という意味のリテラル文字列が\uある場合は、正規表現で前処理するだけで、そのようなシーケンスが同じコードの実際の文字に置き換えられます。

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

ところで、\uPerlでは異なる意味を持っています-それは次の記号を大文字にします。ドキュメントでエスケープの完全なリストを確認できます。

于 2012-10-31T15:00:12.347 に答える