-PR-
解決
済み

NetScapeのURLエンコード(JavaScript)

  • すぐに回答を!
  • 質問No.63304
  • 閲覧数160
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 66% (2/3)

NetScapeでJavaScript(escape)を使用して
【経営】という文字列をURLエンコード
しようとしたら、【%8Co%89c】となりました。

通常は【%B7%D0%B1%C4】となるはずなのですが
うまくいきません。
解決方法はありますでしょうか?

ちなみに、NetScape4.7です。
6以降だとうまくいきました。
ご回答よろしくお願いいたします。
以上
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル14

ベストアンサー率 50% (1122/2211)

気持ち悪いので、ちょっと調べてみました。
確かに 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側で処理するしかないですね。
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

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

> 通常は【%B7%D0%B1%C4】となるはず

「通常は」ではなく、漢字コードがEUCなら、です。

HTMLファイルをEUCで書いて、META タグで、EUCだ、って
きちんと書きましょう。

NetscapeNavigator6 で、どうしてそうなるのかの方が
(私にとっては)不思議。
補足コメント
yasum

お礼率 66% (2/3)

環境説明が足りなかったようです。

申し訳ありません。

通常charset=EUC-JPで書かれている
ページで動作するJavaScriptの
場合、と書くべきでした。

上記のMETAタグはきちんと書いてます。
投稿日時 - 2001-04-13 15:30:38
お礼コメント
yasum

お礼率 66% (2/3)

ありがとうございます。
確かに、Shift_Jisによってエンコードされては
いるようですが、それにしたって
URLエンコードとはいえませんよね。

通常は・・・また怒られそうですが、
【%8c%6f%89%63】とならなければ
いけないような気がします。

javascriptのバグなのでしょうか?
それとも、NetScapeのバグなのでしょうか?
投稿日時 - 2001-04-13 16:01:29


  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

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

> URLエンコードとはいえませんよね

だけに反応します。
shift-jis と考えれば、正常にエンコードされてるんじゃないですか?

経営 → 8c6f 8963

だけど、0x6f 0x63 は ASCII だから、そのまま "o" "c" になってて
も構わないですね。
お礼コメント
yasum

お礼率 66% (2/3)

早速のお答えありがとうございます。

UNIXサーバ上で動作するプログラムですので、
受けるコードはEUCを想定しておりました。

ですので、受けるパラメータ(GETで)は
すべてEUCでうけとりますが、JavaScript
でエンコードしたパラメータだけ
Shift_jisになってしまうというのはどうにもこうにも
大変なことですね。
URLデコードしたのち
文字列を見てEUCとShift_jisを判定して
Shift_JisのものはEUCに変換するなんていう
馬鹿みたいなフローになってしまいます。

頭がいたいです。なんでShift_Jisになってしまうのか・・・。
これはすべてShift_Jisにする方法しかないのでしょうかね。
ありがとうございました。
投稿日時 - 2001-04-13 16:42:18
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ