Rubyです。基本的な質問ですみません(><)。あるif文をdefでまとめて動かしたところ、西欧のエンコードで表示されてしまうのですが、

これはエラーですよね?正しい動作にならないのですが、どうしたらよいでしょうか。

def search_kansi(h)
if h == 1
kansi = "甲子"
elsif h == 2
kansi = "乙丑"
elsif h == 3
kansi = "丙寅"
else
kansi ="無効な値が入力されました"
end
return kansi
end #def

nikkan = search_kansi(h)
print nikkan

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/03/14 18:17:34
  • 終了:2011/03/21 11:09:24

ベストアンサー

id:taka-hr No.3

taka-hr回答回数57ベストアンサー獲得回数42011/03/15 16:15:07

ポイント36pt

試してみたところ"乙丑" という文字列に対して、FireFox だと文字コードの

自動判別に失敗するようです。

この文字列だけの html ファイルを作成して開いてみるとわかります。

CGI として実行しているならば、Content-type: text/html; charset=Shift_JIS を

HTTPヘッダとして出力するのがよいのではないでしょうか。

自前で Content-type を出力しているなら charset の指定を文字列として追加するか、

たとえば CGI.rb を利用しているなら cgi.out のオプションを指定してみてください。

id:tisei

あ、IEで動きました☆。ありがとうございます。

Content-type: text/html; charset=Shift_JISは指定しています。

もう三重くらい宣言しているんですが、FireFoxには利かないみたいですねぇ。

FireFoxはユーザーが多いので対応したいなぁ。

2011/03/15 16:20:42

その他の回答(3件)

id:toshiki2131 No.1

こうき回答回数31ベストアンサー獲得回数02011/03/14 22:12:26

ポイント18pt

それはダウンロードエラーですか?

それさえわからばなんとかなるかも

id:tisei

ダウンロードエラーではないとは思うのです。

2011/03/15 09:54:54
id:deflation No.2

deflation回答回数1036ベストアンサー獲得回数1262011/03/14 22:45:14

ポイント18pt

ご利用のOS、Rubyのバージョンが分からないのですが、まず、ソースコードの下記の行が間違っています。


(誤)nikkan = search_kansi(h)

(正)nikkan = search_kansi(1)  ※具体的な値を代入してください。


次に「西欧のエンコードで表示されてしまう」とのことですが、ソースコードの文字コードについて、Windowsをご利用ならシフトJISで、Linuxをご利用ならEUC-JPで保存してから実行してみてください。

id:tisei

行をはしょってしまいましたが、hの中身には整数値が入っています。

で、ケータイサイト対応なのでシフトJISを用いています。下記の補足コメントの通り、三重にエンコード指定しています。

2011/03/15 09:56:47
id:taka-hr No.3

taka-hr回答回数57ベストアンサー獲得回数42011/03/15 16:15:07ここでベストアンサー

ポイント36pt

試してみたところ"乙丑" という文字列に対して、FireFox だと文字コードの

自動判別に失敗するようです。

この文字列だけの html ファイルを作成して開いてみるとわかります。

CGI として実行しているならば、Content-type: text/html; charset=Shift_JIS を

HTTPヘッダとして出力するのがよいのではないでしょうか。

自前で Content-type を出力しているなら charset の指定を文字列として追加するか、

たとえば CGI.rb を利用しているなら cgi.out のオプションを指定してみてください。

id:tisei

あ、IEで動きました☆。ありがとうございます。

Content-type: text/html; charset=Shift_JISは指定しています。

もう三重くらい宣言しているんですが、FireFoxには利かないみたいですねぇ。

FireFoxはユーザーが多いので対応したいなぁ。

2011/03/15 16:20:42
id:taka-hr No.4

taka-hr回答回数57ベストアンサー獲得回数42011/03/15 18:14:01

ポイント18pt

文字コード判別だけの問題であるなら(プログラムが正しく動いているなら)

必要な出力文章などを適宜追加すれば、それによって正しく判別

されるようになると思います。

どうしても上記文字列しか出力したくない場合は、コメントとして

ただしく判別されるような文字列を入れるという方法もあります。

手元の静的HTMLだと で直りました。

id:tisei

文字列で判別しなきゃならないので、困っているんですよね。

2011/03/15 20:28:59
  • id:tisei
    補足です。ケータイサイト用のためShift-JISにエンコードしています。
    三重に宣言しているんですが、defでくくるとエンコードが利きません。
    この謎を解いて頂ける方、を激しく募集します。

    #!/usr/local/bin/ruby -Ks
    # -*- coding:shift_jis -*-

    $KCODE = 'SJIS

    こんな宣言をしています。
  • id:taka-hr
    2回回答しちゃったので。
    HTML出力にコメントを追加するのはいかがでしょう?

    <!-- 表表表 -->

    と追加したら、と書いたのですが消えてしまってましたw;
  • id:tisei
    すみません。意味ないんです。
    暦を使って通変星を判定するプログラムなんで、これまだ途中なんですよ。
    すみません。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません