人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Perl5.8.4です。「use encoding・・・」を使ったプログラムで、URLエンコード(URLエスケープ)したい箇所があるのですが、どうしてもうまくいきません。
例えば下のプログラムでは「あいう」をURLエンコードしているつもりでも表示されるのは「あいう」のままです。
「use encoding ’euc-jp’;」を消さずにURLエンコードされた文字を表示する方法がありましたらご教示ください。

---プログラム---
#!/usr/local/bin/perl
use encoding ’euc-jp’;
$a = ”あいう”;
#$aをURLエンコード
$a =~ s/([^¥w ])/’%’ . unpack(’H2’, $1)/eg;
$a =~ tr/ /+/;
print ”Content-Type: text/html¥n¥n”;
print $a;
exit;
---プログラムここまで---
--> 結果
あいう
と表示されます

●質問者: ponavi
●カテゴリ:コンピュータ
✍キーワード:EUC-JP EXIT H2 HTML Perl
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 水谷敏行
●80ポイント

http://search.cpan.org/~dankogai/Encode-2.12/Encode.pm

Encode - character encodings - search.cpan.org

use encoding ’euc-jp’;

use Encode qw(encode);

$a = ”あいう”;

$a = encode(’euc-jp’, $a);

$a =~ s/([^¥w ])/’%’. unpack(’H2’, $1)/eg;

以下略

http://search.cpan.org/~dankogai/Jcode-2.03/Jcode.pm

use encoding ’euc-jp’;

use Jcode;

$a = ”あいう”;

$a = Jcode->new( $a )->euc;

$a =~ s/([^¥w ])/’%’. unpack(’H2’, $1)/eg;

以下略

http://search.cpan.org/~dankogai/Encode-2.12/encoding.pm

encoding - allows you to write your script in non-ascii or non-utf8 - search.cpan.org

理由:

use encoding ’euc-jp’;

を指定すると、実行時に$a = ”あいう”;でスカラー$aにUCSワイドキャラクタ

が格納されます。

質問の意図は、おそらくEUC-JPでURLエンコードしたいという意味でしょうから

$aの内容をマルチバイトのEUC-JPに変換しないといけません。

ワイドキャラクタからマルチバイトへの変換には、

Encodeか、それのOOPラッパーのJcodeを使います。

# UTF-8の場合もマルチバイトに変換しなければなりません。

◎質問者からの返答

大変よく分かりました。

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ