• ベストアンサー

NetScapeのURLエンコード(JavaScript)

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

  • yasum
  • お礼率66% (2/3)

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

  • ベストアンサー
  • 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

  • シフトJISでURLエンコード

    IEのJavaScriptのescapeで日本語をURLエンコードすると、UnicodeでURLエンコードしてしまいますが、シフトJISのままURLエンコードする方法はないのでしょうか? 文字列のシフトJISコードを取得する方法でも良いのですが・・・。 まったく、Unicodeなんて役に立たないものを無理矢理標準にしようとしないで欲しいナ!>MS

  • VB.net・JavaScriptエンコードについて

    VB.net・JavaScriptエンコードについて JavaScriptでのエンコード、ではなく、 下記のページに表示されている「JavaScript」の書式が何なのかがわかりません。 http://encodemaniax.com/index/encode/utf8/44Oi44Oz44K544K%2C44O8 「モンスター」という文字列を訳があって 「"\u30e2\u30f3\u30b9\u30bf\u30fc"」という文字列に変換したいのです。 utf-8やShift-jisの変換はできるのですが、 上記ページの「JavaScript」が何を示しているのかわかりません。 自分でGoogleなどで調べても、検索用語が「JavaScriptエンコード」などとしか検索できないので 「JavaScriptでのエンコード」の結果が出てきてしまいます(汗 初歩的なことかもしれませんが、ご回答いただければ幸いです。 宜しくお願いいたします。

  • URLエンコード(JavaScript)をデコード(JSP)する方法

    JavaScriptでescapeでエンコードした文字列をJSPで取得しデコードするにはどのようにしたらよいのでしょうか? JavaScriptで言うところのunescapeにあたるメソッドはJavaでは何になるのでしょうか? URLDecoder.decodeを利用して String P = ""; P = URLDecoder.decode("%u304A%u306F%u3088%u3046","UTF-8"); としていますが、上手くデコード出来ません。

    • ベストアンサー
    • Java
  • URLのエンコードについて

    JavaScriptで、JSON形式で渡ってきたデータを読んで、一部、文字列を結合して URLを作るんですが、その際のエンコードは encUrl= 'http://test.com/' + encodeURIComponent(xxx) + '/'; (xxxがjsonからきたデータ) で大丈夫でしょうか? たとえば.NETで言うところのHttpUtility.UrlEncodeと同じことがしたいのですが、 URIエンコードだとたぶん違いますよね…。 何を使えばUrlEncodeが出来るのでしょうか。

  • エスケープ、エンコード ???

    javascriptで、たとえば以下の文字列を(1)から(2)にしたいのですが可能でしょうか? (1)var text = 'ダブルクォーテーション""の前に円マーク'; (2)ダブルクォーテーション\"\"の前に円マーク' 用語として、エスケープ、エンコードなど言葉が思い当たるのですが、 違いなど理解できていないため、混乱しています。 javascriptにはどんなエスケープ関数があり、エスケープ関数はどんなことをするのか、またどんなエンコード関数あり、どういう働きをするのか知りたいです。

  • ApacheのURLエンコード

    URLエンコードで悩んでおります。 LinuxのApache1.3系では URLエンコードはGETで正しく処理できますが、 WindwosのApache2.0系では正しい値が取得できません。 ちなみにPOSTは漢字でも両方処理できました。 URLエンコードでApacheの設定で注意しないといけない点がありましたら 教えて下さい。 はてな ではLinuxのようです。 Apache/1.3.27 (Unix) (Vine/Linux) mod_perl/1.29 http://d.hatena.ne.jp/keyword/%c5%d4%b1%c4%c2%e7%b9%be%b8%cd%c0%fe?kid=930

  • URLエンコードされたデータを戻すには

    POSTでCGIに渡す文字列はURLエンコードされていて、元に戻すにはデコードが必要ですが、もともとURLエンコードされたデータをデコードしたデータにできないでしょうか。 普通は、 読める文字→URLエンコード→CGIによる処理→URLデコード→読める文字 ですが、 もとのデータがURLエンコードされた状態だと、 URLエンコードされた文字→URLエンコード→CGIによるURLデコード→URLエンコードされた文字 となってしまいます。 たとえば、「%82%a0%82%a0%82%a0」というデータ形式から、「あああ」というデータを得たいのです。

  • javascriptでEUCのエンコード

    検索エンジン用のエンコードした文字列をjavascriptで処理しようとしています。 encodeURIComponent で処理するとUTF-8でエンコードされてしまい、思うような結果が得られません。 EUCでエンコードされた結果を得る方法は無いでしょうか? ネットで探してみたのですがjavascriptだけで解決する方法を見つけられずに困っています。 javascript内で自作の関数を作ってもいいのですが、何かヒントがあればと思います。 よろしくお願いします。

  • URLエンコードについて

    「 † 」 の文字をUTF-8 でURLエンコードした時の値が2種類あるんでしょうか。 以下の2つのURLエンコードした文字を %EF%BC%8D %E2%80%A0 URLエンコード/ デコードの結果を出力してくれる こちらのサイトと https://www.tagindex.com/tool/url.html こちらのサイト https://tech-unlimited.com/urlencode.html で結果が異なるみたいです。 なぜこういった結果が異なる状況が生まれるのでしょうか そして正しいのはどちらなのでしょうか

  • URLエンコード  文字数について

    URLエンコード  文字数について <a href="mailto:info@example.com?subject=%96%e2%82%a2%8d%87%82%ed%82%b9">メールはこちらへ</a> などHTMLの記述で文字化けを防ぐために下記文字列のように %96%e2%82%a2%8d%87%82%ed%82%b9 日本語をエンコードしていますが、ある一定以上の文字数を入力すると、そのリンクをクリックしてもメールソフトが起動しません。 文字数の制限があるのでしょうか? 詳しい方いらっしゃいましたら教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • HTML

専門家に質問してみよう