いま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に持たせたいのですが
どうすればよいでしょうか。
お手数ですがよろしくお願いいたします。
<form accept-charset="EUC-JP" method="POST" action="http://xxx.jp/cgi-bin/main.cgi">
などとFORMのほうで文字コードを指定しておいて、受取ったCGIのほうもそれに合わせた処理をすればいいのではないでしょうか。
基本的にネット上では半カナは諸処の問題から使用しないように
した方がいいです。
それでもどうしても使用したい場合は、どのように化けるのかなどの
例が提示されていないので分かりませんが、原因のひとつとしては
送信時のフォームが記述されているHTMLのエンコードと
Perlスクリプトのエンコードが間違えている可能性があります。
metaタグによるエンコードを指定せずにASCII文字列のみで
書かれたページはMS-Win+MS-IEではデフォルトでSJISが選択
されます。
その上でPerlスクリプトの方はEUC-JPとかUTF-8なんかで書いて
いたら、化けるのは当たり前です。
Jcode.pmなどを使用して変換してみてください。
(jcode.plは半カナに対応していないので使用できません)
「ハンカク」が化けずに、「ハンカク」が化けているのは、webサーバから送出される内容はEUC-JPで、それを携帯の側で送受信ともに変換しており、そしてその変換の仕方に問題があるからではないでしょうか。
Jcode.pmなりUnicode::JapaneseなりText::Iconvなりで入出力とも変換して、webサーバが送受信する内容自体をShift_JISにしてしまうのがいいと思いますよ。
半角カナは利用したくないのは、もちろんなのですが、携帯用のHPでして、ユーザはかなり半角の入力をしてきます。
「ハンカク」(全角)⇒「ハンカク」と表示され
「ハンカク」(半角)⇒「保狂」と表示されます。
前者がうまくいくということは、エンコードは
合っていると言うことと思ってますが、、