![]() |
カレッヂ |
質問者 にゃあ
投稿日 3/9(金) 18:13:49
初めまして。初心者なので質問の仕方も下手だと思います。 htmlのフォームに入力したデータをcgiで受け取り、htmlで表示させたいのですが、 日本語がきちんと表示されません。英数字は表示できます。 jcode.plはサーバにおいてありますし、色々試して見ましたが、ぜんぜん原因がわかりません。 http://www.sos.or.jp/rensyu2.html で実際に見ていただけます。 どなたかご教授ください。お願いいたします。 |
回答者 しあわせのツボ
[削除]
投稿日 3/9(金) 20:45:46
ダブルバイト文字はURLエンコードされて送られます。それをデコードしていないようですね。 たとえば$dataに入っている内容をデコードするには、jcode::convertをかける前に $data =~ s/%([a-fA-F\d]{2})/pack("C", hex($1))/eg; とします。 |
質問者 にゃあ
[削除]
投稿日 3/12(月) 09:39:51
ありがとうございました。早速そのようにしてみたところ 日本語での表示がうまくいきました!! 入力データ解析ルーチンで foreach (@query) { ($key, $val) = split(/=/); $key =~ s/%([A-Fa-f0-9] [A-Fa-f0-9])/pack("c", hex($1))/ge; $val =~ s/%([A-Fa-f0-9] [A-Fa-f0-9])/pack("c", hex($1))/ge; としていますが、それとは $name1 =~s/%([a-fA-F\d]{2})/pack("C",hex($1))/eg;は別物なのですね。 色々なサンプルを見ていたのですが、上記のような処理は見かけなかったような気がします。 まだまだ勉強しなければいけないと痛感しています。本当にありがとうございました。 |
回答者 しあわせのツボ
[削除]
投稿日 3/12(月) 12:55:04
記述が違うだけで処理は同じなのですが、pack("C",の所が小文字cになっているようですね。 大文字か小文字かによって処理が異なるので、確認して下さい。 |
返信(回答)する
Web裏技 |