
お世話になります。
自分で作ったサイトですが、
入力フォームの氏名を書き込んで、それをクッキーに保存して、それを呼び出すと、入力した名前が文字化けしてしまいます。
自分で作ったといっても、無料配布のCGIです。
これはファイヤーフォックスの問題でしょうか?
私の環境は、Windows8.1 です。
ちなみに、その部分の内容は、次の通りです。
print "<FORM METHOD=\"POST\" ACTION=\"./bbs.cgi\" ENCTYPE=\"multipart/form-data\">\n";
print "<input type=\"hidden\" name=\"mode\" value=\"modify\">\n";
print "<input type=hidden name=\"no\" value=\"$main_no\">\n";
}else{
print "<FORM METHOD=\"POST\" NAME=\"F1mode\" ACTION=\"./bbs.cgi\" ENCTYPE=\"multipart/form-data\" onSubmit=\"return chuuikakunin()\">\n";
print "<input type=\"hidden\" name=\"mode\" value=\"add\">\n";
}
正直なところ詳しいことはよく分かりませんが、
onSubmit=\"return chuuikakunin()\"
↑これは、JavaScriptを使って名前の入力が無いとアラートで知らせるためのものだと思われます。
よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
先の回答者が説明している通り、formに送信文字コード指定するのが簡単かなとは思います。
あと参考までに思いつくものをいくつか。
・ファイルの文字エンコード(htmlの指定と別の場合が……)
・htaccessの設定
CGIの中身がわかりやすいものでしたら
送信先の部分で、展開前に
文字エンコーディングの自動判別→データ変換という手も使える…かも……
この回答への補足
No.3のORUKA1951さんのご回答のように、
formに、Accept-charset=\"Shift_JIS\" を入れてみました。
ダメでした。ファイヤーフォックスだけだめです。
他のブラウザは大丈夫でした。
次に、ネットで調べて、名前の入力部品に次のように入れてみました。
<INPUT TYPE = \"text\" name = \"name\" SIZE = \"30\" VALUE=\"$c_name\" onclick=\"org=document.charset;
document.charset=\'shift_jis\';
document.f1.submit();document.charset=org;\" maxlength=10>
これもダメでした。
結局、あと残りの方法で、No.3のORUKA1951さんに教えてもらった
$xx =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
が、まだ残っておりますが、どこに入れていいもの分からないので試していません。
ファイヤーフォックスとWindows8.1の問題でしょうか?
でも、他のサイトは大丈夫なので、やっぱりクッキーの問題でしょうか?
すみません。でも、ありがとうございました。方法はありそうなので少し安心しました。
どちらにしても、私の能力を超えている問題です(:_;)情けないですが。
No.3
- 回答日時:
>これはファイヤーフォックスの問題でしょうか?
ということは、他のブラウザでは文字化けしないということですか??
本来は、formにcharsetが指定されていない場合は、それが含まれるHTMLのcharsetで送信されます。文字コードによってその数値は異なります。
受け取ったCGI側で文字コードが判別できない場合とか、cookieにする時にきちんとURL変換されていないと・・
Perlでしたら
$xx =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
名前の入力チェックでしたらjavascriptは関係ありません。
ファイヤーフォックス以外は文字化けしません。
よく見ると、クッキーに保存された文字が、2回目は倍の長さになっています。
文字化けした文字がさらに増殖して文字化けしている感じです。
CGIはPerlです。
その他のことは難しいので調べてテストしてみます。
ありがとうございました。
No.2
- 回答日時:
文字コードちゅうもんがあるわけですよ。
「あ」とか「い」とか書いてても本当は番号なわけですよ。
http://www.seiai.ed.jp/sys/text/java/shiftjis_ta …
んでもって文字コードには面倒なことに種類がいくつかあるのですね。
utf-8 euc-jp shift-jis などなど
なので、同じ「あ」て書いたとしても、実際は番号なので、
その番号を他の文字コードと勘違いして、対応表に照らしあわせて表示したら全く別の文字になるわけですよ。
俗にいう文字化けです。
フォームが表示されている文字コード → 多分ブラウザはこの文字コードでpealに入力したデータを投げるでしょう。
プログラム内部で受け取って処理するのですが、内部では別の文字コードとして取り扱ってる
などなど、ちゃんと文字コードの事を考えずに作ると文字化け地獄です。
質問内容を見るにご自分で制作されたものではないでしょうから、設置マニュアル等を探してみてください。
HTMLのヘッダー部は、charset=Shift_JISとしています。
他の、文字コードにしてみると、ファイヤーフォックスはもちろん、IEやGoogle Chromeやサファリでも文字化けします。
Shift_JISだけがファイヤーフォックスで文字化けします。
もうちょっとテストしてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
絶対パスと相対パスについて。
-
HTML&CSS 学習本の相談
-
HTML&CSS 学習方法のお勧め
-
ホームページを作っていたらhtm...
-
ホームページのサイトでhtm...
-
HTML/CSSを使って写真のような...
-
HTMLでクロス抽出したい
-
htmlで"start-|"から"|-stop"ま...
-
HTMLで画像をポップアップで表...
-
角丸画像の背景色を透明にした...
-
レスポンシブで困っています・・
-
ホームページの制作について教...
-
GoogleSearchControlにホームペ...
-
Dreamweverは今も主流なんです...
-
動画と画像&タイトル2列を横並...
-
完全素人がノーコードWEB制作の...
-
YouTubeの動画を自分のホームペ...
-
htmlが簡単に作成できるアプリ...
-
html 階層を下げると3分割画面...
-
index.htmlがうまく反映されない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
submitをボタン以外にするには
-
submitの処理の後別の画面を表...
-
1アクションでPOST・GET、両方...
-
リンクをクリックした時にform...
-
ラジオボタンで選択した項目に...
-
同じnameのhiddenで別々の内容...
-
mailtoでバイナリーファイルを添付
-
URL パラメータを使ってフォー...
-
長文のmailtoの使い方
-
フォーム要素以外にもname属性...
-
HTMLとPerl間のページ遷移につ...
-
ブラウザを使った入力フォーム
-
送信ボタン押下時に値が未入力...
-
ページがEnterで再起動されるの...
-
メールフォームの送信ボタンが...
-
HTML Formの属性actionは2つの...
-
<a href=**?***=***>をGET方式で
-
formタグのactionパラメータで...
-
checkboxを「変更不可」にでき...
-
ブラウザのテキストボックスに...
おすすめ情報