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に持たせたいのですが
どうすればよいでしょうか。

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/07/01 15:35:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:jiangmin-alt No.1

回答回数125ベストアンサー獲得回数8

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

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

id:villain No.2

回答回数174ベストアンサー獲得回数12

ポイント27pt

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

した方がいいです。


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

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

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

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

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

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

されます。

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

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


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

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

id:tubotti

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

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

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

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

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

2006/06/24 20:55:19
id:jiangmin-alt No.3

回答回数125ベストアンサー獲得回数8

ポイント26pt
  • Shift_JISで「ハンカク」は cadd b6b8
  • EUC-JPで「保狂」は cadd b6b8

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

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません