送信データがunicodeになってしまうのを防ぐには?(IEのみ)
[上に]
[前に]
[次に]
とこやん
1999/12/07(火) 18:07:17
皆さまこんにちわ。
../199812/98120079.htm
や
../199904/99040211.htm
で皆さまお困りのように、私も同じ問題に直面してしまいました。
新しいウィンドウをJavaScriptで開いて、そこからフォームデータを送信する時に、
IE5.0(win)、IE4.5(mac)では、文字化けしたデータが送られてしまいます。
これは、unicodeで送るという仕様変更により起こる現象のようです。
ちなみにNNでは、全然へいきでした。
これについて、皆さまどの様に対策されているのでしょうか。
サーバ側?クライアント側?
../199812/98120079.htm
で、omiさんが述べられているように、クッキーを介す方法でも良いのですが、
なにぶんデータが大きいものでして。。。
宜しくお願い致します。
P初心者
1999/12/07(火) 22:14:48
試していないけど、以下は試す価値あり!?
function func() {
w = window.open();
with (w.document) {
writeln("<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=Shift_JIS'>");
writeln("<HTML><HEAD><TITLE>テスト</TITLE></HEAD><BODY>");
writeln("<FORM METHOD=POST ACTION='xxx.cgi'>");
writeln("<INPUT TYPE=text NAME='NAME'>");
writeln("<INPUT TYPE=submit VALUE='OK'>");
writeln("</FORM></BODY></HTML>");
close();
}
}
charsetはお好きなコードに〜
P初心者
1999/12/07(火) 22:27:09
間違えました!
<META>タグは<HTML>タグの後に入れてきださい!
とこやん
1999/12/08(水) 11:45:28
P初心者さん、こんにちわ。
METAタグ入れてみましたが、JavaScriptで開いたウィンドウに対しては、
やっぱり文字コードの指定は出来なかったです。。。
ちなみに、仮にhtmlファイルを用意し、それをwindow.openさせたところ、
文字コードの指定も出来ましたし、文字化けも起こりませんでした。
JavaScriptで記述した新しいwindowのみ、不具合が発生するようです。
これがIEの仕様と言うものなのでしょうか???
#VBScriptを使えと言うのかしら?
P初心者
1999/12/08(水) 13:00:22
私も試しました!
とこやんさんと同じでした!
>これがIEの仕様と言うものなのでしょうか???
バグでしょ〜
IE3の時、よく漢字コードで泣かされました!
IE4で良くなったと思ってましたが、こんなところにまだ残骸が...。
あとは、まだ、凄い人がウォッチしていると思いますので様子をみましょう。
とこやん
1999/12/08(水) 16:45:04
P初心者さん、ありがとうございます。
バグですか。そうですか。とほほ。。。
もう少し様子を見てみたいので、「解決」マークはつけないでおきます。
すみませんが、宜しくお願い致します。
zizz...
[HomePage]
1999/12/12(日) 15:37:32
私は全然分かっていない人ですが、調べた結果を書きます。
フォームデータの話ではなく、escape関数の話ですが。
RFC 2396 "Uniform Resource Identifiers (URI): Generic Syntax"では
「エンコードはどうしようかな」みたいなこと(意訳)が書いてあります。
http://www.ietf.org/rfc/rfc2396.txt
RFC 2718 "Guidelines for new URL Schemes"では
Unless there is some compelling reason for a
particular scheme to do otherwise, translating character sequences
into UTF-8 (RFC 2279) [3] and then subsequently using the %HH
encoding for unsafe octets is recommended.
となっており、まずUTF-8でescapeすることを勧めています。
好き勝手にescapeされると対応が面倒なので、UTF-8で一本化しようという方針らしいです。
http://www.ietf.org/rfc/rfc2718.txt
ここからJavaScriptの話。
escape(string)でUnicodeを使うのは仕様です。
ECMAScript 2でそうなっており、3 (Final Draft)でも変わっていません。
NetscapeのJavaScript 1.4 Referenceを見ると、
ECMAScriptに逆らって、今まで通りISO-Latin-1を使うとあるのですが、
Mozillaで動作確認してみると見事にUnicodeを使ってくれます。(笑)
ECMAScript 3 (Final Draft)を眺めていたら、
encode(uri)
というものを発見しました。
名前の通りの動作をするものですが、これもUTF-8 encodingです。
RFC 2718に従っているようです。
いろいろ書きましたが、まだ解決方法がわかりません。
最近のJavaScriptは内部でUnicodeを使っているし、自力で変換するのは難しいのではないでしょうか。
とこやん
1999/12/14(火) 19:09:15
zizz... さん、ありがとうございます。
こんなにいろいろ調べて頂き、勉強になります。
>最近のJavaScriptは内部でUnicodeを使っているし、自力で変換するのは難しいのではないでしょうか。
知りませんでした。すみません、勉強不足ですね。
現在急ぎ、リファレンスを翻訳中です。
(しっかし、Unicodeに関しては、NN、IE共に挙動不審ですね。。。)
ただ、今回の問題ですが、IE+JavaScriptの組み合せのみNGという理由が分からないんですよね。
NN+JavaScript、NN+HTML、IE+HTMLでは、送るデータがunicodeで何であれ、
サーバ側が解読してくれるのに、最初の組み合わせでは文字化けする。
もう、これはお手上げですかねぇ。。。
zizz...
[HomePage]
1999/12/14(火) 21:56:06
> encode(uri)
encodeURI(uri) の間違い。
> 現在急ぎ、リファレンスを翻訳中です。
翻訳してどこかのサイトにアップしてくれるの?それなら助かる。
それとも翻訳機にかけているだけ?
> NN+JavaScript、NN+HTML、IE+HTMLでは、送るデータがunicodeで何であれ、
> サーバ側が解読してくれるのに、最初の組み合わせでは文字化けする。
%uXXXXでもサーバーが期待通りに解釈してくれたのですか?
shin'
[E-Mail]
1999/12/17(金) 00:56:37
なんか収束したみたいですが…。
フォームで漢字を次のページに渡したときにIEとNetscapeだと
違う、という問題を僕はVBScriptで回避しました。
Netscape(エラーが出ない4以降)ならJavaScriptとVBScriptを
同居させてもぜんぜん平気ですが、IEだときつくしかられるので
同居させるしくみ、またはVBScriptを実行させるタイミングが
問題です。ちなみに僕はVBScriptだけのページを別に開いて
親ウィンドウと同期をとるという方法をとりました。参考まで。
とこやん
1999/12/17(金) 10:09:59
zizz...さん、shin'さん、こんにちわ。返信が大変遅れ、申し訳ありませんです。
zizz...さん>%uXXXXでもサーバーが期待通りに解釈してくれたのですか?
すみません。私の方が勘違いをしていたようです。
IISは、Unicodeも対応しているとMSのサイトに明記されていたので、
NTの内部処理はUnicodeで行っているらしい、という情報とあわせて、
IEはデータを全てUnicodeで送る、と勝手に解釈しておりました。
IEも、ちゃんと、HTMLで記述した文字コードで送っているのかな?
shin'さん>VBScriptで回避しました。
この方法が一般的なようですね。
JavaScriptなページと、VBScriptなページを用意するしかないのでしょうかねぇ。
そうそう、リファレンスの翻訳の件ですが、
友人に翻訳を依頼していたのですが、「専門用語が分からないから、わからん!」
と言われてしまいました。確かにそうですよね。
法律の専門家には、分からない用語だらけだよね。。。
と言う訳で、アップできません。ごめんなさい。
[上に]
[前に]
[次に]