• ベストアンサー

NetScapeのURLエンコード(JavaScript)

NetScapeでJavaScript(escape)を使用して 【経営】という文字列をURLエンコード しようとしたら、【%8Co%89c】となりました。 通常は【%B7%D0%B1%C4】となるはずなのですが うまくいきません。 解決方法はありますでしょうか? ちなみに、NetScape4.7です。 6以降だとうまくいきました。 ご回答よろしくお願いいたします。 以上

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

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.3

気持ち悪いので、ちょっと調べてみました。 確かに yasum さんのおっしゃる通り。私は NN4.7なんですけど、 <html> <head> <meta http-equiv="Content-Type" content="text/html;CHARSET=EUC-JP"> </head> <body> <script language="JavaScript" charset="EUC-JP"> <!-- s = "経営"; document.write(s); document.write("<br>"); document.write(escape(s)); document.write("<br>"); document.write(unescape(escape(s))); document.write("<br>"); document.write(unescape("%B7%D0%B1%C4")); document.write("<br>"); //--> </script> </body> </html> って試しにページを作って表示してみても、sjis扱いでした。 本家、Netscape の JavaScript のマニュアル(参考URL)を見ても、 ちょっと分からんです。 ちなみに有名どころの「とほほの...」を見てみた(*)んですが、 sjis扱いが当たり前みたいな書き方をしていて、IEだとUnicodeだから 問題なのだ、なんてことが書いてありました。   (*) http://wakusei.cplaza.ne.jp/twn/wwwjsbui.htm CGIに渡すパラメータを考えるのであれば、渡す前に unencode() するか、 CGI側で処理するしかないですね。

参考URL:
http://developer.netscape.com/docs/manuals/communicator/jsref/glob7.htm#1012329
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

とりあえず、何故そうなるのかは私にも良く分からんのですが、 > URLエンコードとはいえませんよね だけに反応します。 shift-jis と考えれば、正常にエンコードされてるんじゃないですか? 経営 → 8c6f 8963 だけど、0x6f 0x63 は ASCII だから、そのまま "o" "c" になってて も構わないですね。

yasum
質問者

お礼

早速のお答えありがとうございます。 UNIXサーバ上で動作するプログラムですので、 受けるコードはEUCを想定しておりました。 ですので、受けるパラメータ(GETで)は すべてEUCでうけとりますが、JavaScript でエンコードしたパラメータだけ Shift_jisになってしまうというのはどうにもこうにも 大変なことですね。 URLデコードしたのち 文字列を見てEUCとShift_jisを判定して Shift_JisのものはEUCに変換するなんていう 馬鹿みたいなフローになってしまいます。 頭がいたいです。なんでShift_Jisになってしまうのか・・・。 これはすべてShift_Jisにする方法しかないのでしょうかね。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

それは、漢字コードが SHIFT-JIS だから。 > 通常は【%B7%D0%B1%C4】となるはず 「通常は」ではなく、漢字コードがEUCなら、です。 HTMLファイルをEUCで書いて、META タグで、EUCだ、って きちんと書きましょう。 NetscapeNavigator6 で、どうしてそうなるのかの方が (私にとっては)不思議。

yasum
質問者

お礼

ありがとうございます。 確かに、Shift_Jisによってエンコードされては いるようですが、それにしたって URLエンコードとはいえませんよね。 通常は・・・また怒られそうですが、 【%8c%6f%89%63】とならなければ いけないような気がします。 javascriptのバグなのでしょうか? それとも、NetScapeのバグなのでしょうか?

yasum
質問者

補足

環境説明が足りなかったようです。 申し訳ありません。 通常charset=EUC-JPで書かれている ページで動作するJavaScriptの 場合、と書くべきでした。 上記のMETAタグはきちんと書いてます。

すると、全ての回答が全文表示されます。

関連するQ&A