アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

ちなみに、NetScape4.7です。
6以降だとうまくいきました。
ご回答よろしくお願いいたします。
以上

A 回答 (3件)

それは、漢字コードが SHIFT-JIS だから。



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

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

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

NetscapeNavigator6 で、どうしてそうなるのかの方が
(私にとっては)不思議。

この回答への補足

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

申し訳ありません。

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

上記のMETAタグはきちんと書いてます。

補足日時:2001/04/13 15:30
    • good
    • 0
この回答へのお礼

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

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

javascriptのバグなのでしょうか?
それとも、NetScapeのバグなのでしょうか?

お礼日時:2001/04/13 16:01

とりあえず、何故そうなるのかは私にも良く分からんのですが、



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

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

経営 → 8c6f 8963

だけど、0x6f 0x63 は ASCII だから、そのまま "o" "c" になってて
も構わないですね。
    • good
    • 0
この回答へのお礼

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

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

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

頭がいたいです。なんでShift_Jisになってしまうのか・・・。
これはすべてShift_Jisにする方法しかないのでしょうかね。
ありがとうございました。

お礼日時:2001/04/13 16:42

気持ち悪いので、ちょっと調べてみました。


確かに 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/commu …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!