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

perl初心者です。

いまindex.htmlでこのようにフォームを作成しております。

<form method="POST" action="http://xxx.jp/cgi-bin/main.cgi">
<input name=xxx size=10 maxlength=10>
<input type=submit value="GO">
</form>

そして、main.cgiにxxx=入力文字がPOSTされるのですが
そこに半角カナ文字を入れた場合、

main.cgiで受け取った文字を表示すると文字化けしてしまいます。
希望としては、半角カナ文字を全角カナに変換してxxxに持たせたいのですが
どうすればよいでしょうか。

お手数ですがよろしくお願いいたします。

●質問者: tubotti
●カテゴリ:インターネット ウェブ制作
✍キーワード:CGI HTML INDEX Perl 作成
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● jiangmin
●27ポイント
<form accept-charset="EUC-JP" method="POST" action="http://xxx.jp/cgi-bin/main.cgi">

などとFORMのほうで文字コードを指定しておいて、受取ったCGIのほうもそれに合わせた処理をすればいいのではないでしょうか。


2 ● villain
●27ポイント

基本的にネット上では半カナは諸処の問題から使用しないように

した方がいいです。


それでもどうしても使用したい場合は、どのように化けるのかなどの

例が提示されていないので分かりませんが、原因のひとつとしては

送信時のフォームが記述されているHTMLのエンコードと

Perlスクリプトのエンコードが間違えている可能性があります。

metaタグによるエンコードを指定せずにASCII文字列のみで

書かれたページはMS-Win+MS-IEではデフォルトでSJISが選択

されます。

その上でPerlスクリプトの方はEUC-JPとかUTF-8なんかで書いて

いたら、化けるのは当たり前です。


Jcode.pmなどを使用して変換してみてください。

(jcode.plは半カナに対応していないので使用できません)

◎質問者からの返答

半角カナは利用したくないのは、もちろんなのですが、携帯用のHPでして、ユーザはかなり半角の入力をしてきます。

「ハンカク」(全角)⇒「ハンカク」と表示され

「ハンカク」(半角)⇒「保狂」と表示されます。

前者がうまくいくということは、エンコードは

合っていると言うことと思ってますが、、


3 ● jiangmin
●26ポイント

「ハンカク」が化けずに、「ハンカク」が化けているのは、webサーバから送出される内容はEUC-JPで、それを携帯の側で送受信ともに変換しており、そしてその変換の仕方に問題があるからではないでしょうか。

Jcode.pmなりUnicode::JapaneseなりText::Iconvなりで入出力とも変換して、webサーバが送受信する内容自体をShift_JISにしてしまうのがいいと思いますよ。

関連質問


●質問をもっと探す●



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