07/10/23 15:27:18
Perlのテキスト処理で質問させてください。
UTF8な日本語テキストの半角カナを全角にしたいと思ってEncode::JP::H2Zを使おうと思いました。
しかし、一部の文字(~など)がEUCに変換する段階で?に変換されてしまい、困ってしまいました。
とりあえず、コードポイントにフォールバックできることがわかったので、
以下のように書いてその場をしのぎましたが、コードポイントを検索して文字に置換するという
作業が入ってしまい(しかも無駄に複雑)、どうもしっくりきません。
もっと簡単にする方法はありますか?
$text = encode("eucjp", $text, Encode::FB_PERLQQ); # EUCに変換
Encode::JP::H2Z::h2z(\$text); # 全角変換
$text = decode("eucjp", $text);
$text =~ s/\\x\{([0-9A-Fa-f]+)\}/pack("U*", hex($1))/eg; # コードポイントを文字に