• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ルビープログラムのフォーム入力について)

ルビープログラムのフォーム入力について

このQ&Aのポイント
  • ルビープログラムのフォーム入力についての質問です。簡単な掲示板を作成しているのですが、実行するとうまく動きません。ヒントや原因を教えてください。
  • フォーム入力でルビープログラムを実行する際に、半角英数の場合は値が返されますが、全角入力の場合は値が返されません。参考サイトのデータを実行していますが、原因が分かりません。お知恵をお貸しください。
  • Rubyプログラムを使ったフォーム入力の問題です。掲示板の作成に取り組んでいますが、実行時にうまく動作しません。半角英数の場合は値が返されますが、全角入力の場合は値が返されません。どのような原因が考えられるでしょうか?お教えいただけますと幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.2

>しかし入力するページが今度は文字化けします。 >ブラウザのエンコードを変えても文字化けしたままです。 ひょっとして、そのスクリプトのファイル自身がUTF-8で保存してないんじゃないですか?(入力するHTMLページも)

m6419875622
質問者

お礼

ありがとうございました。 おっしゃるとおり保存するファイルを全部UTF-8で保存したところうまくいきました。 重ねてありがとうございました。

その他の回答 (1)

noname#177743
noname#177743
回答No.1

ごく単純な話ですが、文字コードが日本語向けに設定されてないからでは。リンクのページでも日本語は出力してないですよね? printでヘッダー書きだすやり方は面倒なので、CGI.newしてからheaderする形で書きますが、こんな感じでキャラクタセットをUTF-8に設定してはどうでしょう。 #!/usr/bin/ruby require "cgi" cgi = CGI.new() puts cgi.header("charset"=>"UTF-8") #以下、出力内容を適当に puts cgi['t'] # ※できればコードの改行は正確にしてください。複数行がつながっていて一瞬、意味がわかりませんでした。

m6419875622
質問者

お礼

丁寧にありがとうございます。 しかしまだうまく表示されないようです。 言葉すくなくてすみません。

m6419875622
質問者

補足

あれからいろいろ試してみました。 フォーム入力を表示するhtmlページのコードをUTF-8にして 教えていただいた puts cgi.header("charset"=>"UTF-8") で出力すると日本語が表示されました。 しかし入力するページが今度は文字化けします。 ブラウザのエンコードを変えても文字化けしたままです。 フォーム入力のhtmlを <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> にして出力画面も puts cgi.header("charset"=>"shift_jis") にして日本語入力すると今度は下記のエラーを返してきます。 Internal Server Error Premature end of script headers: C:/rubima012-cgi/bar_echo_improved1.rb いろいろと組み合わせてみましたがうまくいきません。 だれかわかる方教えていただけませんでしょうか。

関連するQ&A