CGI(perl)での日本語処理の意味を教えてください
[上に]
[前に]
[次に]
ピーコ
1999/04/27(火) 11:54:50
こんにちは。もう一つ質問があります。
フォームから受け取ったデータの2バイト文字(日本語)の処理
の意味で悩んでいます。
たとえば富とフォームから入力すると%C9%D9になっています。
富 → %C9%D9
富は$dataに入っているとします。
これを以下の処理でコード変換を行います。
$data =~ s/%(..)/pack("c",hex($1))/ge;
hex($1)の$1には %C9、それともC9のどちらが渡されるのでしょうか?
hex関数を単独で実行した場合、
hex(%C9)だとうまくいきませんが、hex(C9)だとうまくいきます。
%はどんな扱いをされているのでしょうか?
どうぞ、よろしくお願いいたします。
無責任官庁
1999/04/27(火) 13:36:03
>hex($1)の$1には %C9、それともC9のどちらが渡されるのでしょうか?
これは正規表現の話しですね。
とりあえず、↓コレを見てもらうとして・・・
http://www.tohoho-web.com/wwwperl1.htm#Expr
すると、$1には、%(..)にマッチした時の(..)の部分が入る事に
なりますので、"%C9"の場合は、"C9"が入ります。
>hex(%C9)だとうまくいきませんが、hex(C9)だとうまくいきます。
>%はどんな扱いをされているのでしょうか?
ではまず16進数っていうモノは分かりますか?
この場合の"%C9"というのは、16進数での"C9"を現しています。
他の言語では、"&hC9"とか"0xC9"とか書いたりもします。
頭に何か付いてないと、単なる"C9"という文字との区別が
付かないですよね?それだけです。
hex(C9)に"%"が無いのは、hex()への引数は16進数のみなので、
他と区別する必要がないからそのまま"C9"なんだと思います。
ピーコ
1999/04/27(火) 14:33:02
[[解決]]
無責任官庁さん、ありがとうございました。
すっきりしました。
[上に]
[前に]
[次に]