JavaScriptでクッキーを作成する為に『とほほ』へ行ったところ、
クッキーの値はエンコード/デコードする必要があると書かれていました。
今日まで2年間ずっと知らないままJavaScriptやCGIでクッキーの読み書き処理
をしていました。

とほほにはその詳しい理由が書かれておらず、
他のウェブサイトでも理由が見つからなかったので教えていただけたら幸いです。

やはりエンコードが必要ということは異なるOS間で不具合が起きるということで、
自分のマシンで動作チェックするだけでは不具合は発見できないということなんでしょうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

例えば以下のデータのような場合に困るからです。



A は 「1=2」
B は 「&」
というデータをクッキーに書き込むと

A=1=2&B=&

で、読み込み&分解するときに
制御記号の=なのかデータの=なのか判断がつかなくなってしまいます。
そこでエンコードしたデータを用いるとデータの=や&などがコードに変換されるため正常に読み書きが可能になるっということです。

この回答への補足

ありがとうございました。

とほほのhttp://tohoho.wakusei.ne.jp/wwwcook.htmでは、
『Cookieの値では、=や;などの特殊記号や日本語文字は %82%A0 のような形式にエンコードして記録しておき、読み出し時にこれをデコードしてやる必要があります。』
と書かれており、この"日本語文字"という言葉に『ということはOSに依存するから必要ということか?』と思ってしまいました。

では、=や&、;、スペースなどを値に使用しなければ、日本語をそのままクッキーに記録しても支障はないということでいいのでしょうか?(Windows 98/Me + IE5/6で今までそうやって来たのですが)

補足日時:2001/12/07 23:06
    • good
    • 0

OSに依存するというのも70点くらいで正解なのですが、正確には文字コードに依存します。


Windows=シフトJIS
Mac=シフトJIS?
Linux=EUC
HP-UX=シフトJIS
とOSにより標準となっている文字コードが異なります。
またこれは、標準であって設定を変更することも可能です。
ただ言えるのは英数字だけの場合は、各文字コードで共通のコードを使用するためエンコードしなくても正常に動作します。
    • good
    • 0
この回答へのお礼

大変丁寧に解説いただきありがとうございました!

ということはシフトJISの文字化けと同じ問題なのですね。
では、やはり一般的なユーザを対象にするならエンコードは必須なわけですね。

各ユーザの既存のクッキーの変更をかけるのは非常に難しいですが、
少しずつエンコードされたクッキー情報に修正したいと思います。

重ねてお礼します。大変ありがとうございました!

お礼日時:2001/12/08 23:22

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qデコード??

mp3からwavはデコードとなりますが

oggからwavの変換は同じ、デコードのように感じますが
なんというのでしょうか?

Aベストアンサー

こういう話題になると、必ずMP3→WAVもエンコードで、デコードが間違いだと回答する人がいますが、デコードで正しいですよ。
エンコードとして説明すると分かりやすいからというだけの話では?
MP3→WAVが「デコードではない」のならウェブ上には嘘つきばかりがいることになりますね。


LAMEのコマンドラインオプションに--decodeというのがありますが、これは、便宜的にWAVやPCMに変換することをdecodeとしているのでしょうか?
http://www001.upp.so-net.ne.jp/yama-k/codec/lame3.95option.html

oggdropXPdで、WAV変換オプションでDecoding Optionsというのがありますがこれも嘘を書いているってことでしょうか。
私は、MP3(Ogg Vorbisなども)→PCM(WAVも含む)をデコードと呼んでいると認識していますが間違いでしょうかね?
PCMにデコードして、WAVヘッダーを付けているのだからエンコードだと言われればそれまでですが。

>>これはアナログにデコードされて見れているのです
アナログにデコードとは何語でしょうか?

また、
http://www.cdwavmp3.com/mp3/ouyou/decode_what.html
こうした説明が間違いであるなら、BBS等で間違いだと指摘してあげてください。

こういう話題になると、必ずMP3→WAVもエンコードで、デコードが間違いだと回答する人がいますが、デコードで正しいですよ。
エンコードとして説明すると分かりやすいからというだけの話では?
MP3→WAVが「デコードではない」のならウェブ上には嘘つきばかりがいることになりますね。


LAMEのコマンドラインオプションに--decodeというのがありますが、これは、便宜的にWAVやPCMに変換することをdecodeとしているのでしょうか?
http://www001.upp.so-net.ne.jp/yama-k/codec/lame3.95option.html

oggdro...続きを読む

Qjavascriptでクッキーを書き出しているんですが、確実にクッキー

javascriptでクッキーを書き出しているんですが、確実にクッキーの値を上書きするにはどうすればいいのでしょうか?
通常では同じkeyがあれば上書きされるはずですよね?それなのに、クッキーの内容を確認すると同じkeyで値が違うものができていて判定ができない状態です。
上書きされないという問題の原因が自分ではわかりません。何か原因があるとすれば解決方法などありますでしょうか?
どなたか是非ご教示の程お願いします。


/*クッキー作成の関数*/
function SetCookie(Value){
Expires = new Date();//日付オブジェクト作成
Expires.setTime(Expires.getTime()+(1000*60*60*24*365));//デフォルト1年有効
Expires = "expires=" + Expires.toGMTString();//クッキーの有効期限を作成
SetData = "Area=" + escape(Value) + ";";//クッキー名=値 を作成
document.cookie = SetData + Expires + ";domain=123456789;path=/;";//クッキー発行
}

javascriptでクッキーを書き出しているんですが、確実にクッキーの値を上書きするにはどうすればいいのでしょうか?
通常では同じkeyがあれば上書きされるはずですよね?それなのに、クッキーの内容を確認すると同じkeyで値が違うものができていて判定ができない状態です。
上書きされないという問題の原因が自分ではわかりません。何か原因があるとすれば解決方法などありますでしょうか?
どなたか是非ご教示の程お願いします。


/*クッキー作成の関数*/
function SetCookie(Value){
Expires = new Date();//日...続きを読む

Aベストアンサー

>通常では同じkeyがあれば上書きされるはず

そうでもないです
きちんとやるなら前のデータを削除して、新たに追加することです。

Q音楽ファイルのエンコード・デコード

mp3ファイルをwavにデコードし、エンコードしてmp3ファイルに戻します。
このとき、デコードする前のmp3ファイルとエンコード後のmp3ファイルに音質などの相違はあるでしょうか?

Aベストアンサー

MP3をデコードしても可逆圧縮の工程の前の状態に戻るだけなので、間引かれた音は元には戻りません。
デコードした時に既に元の音ではないので、それを再度圧縮した場合は、最初の状態のMP3ファイルよりも音質は劣化します。

QJavaScript でファイルの読み書きは可能か?

JavaScript で、サーバー内にある TEST.txt のファイルを
読み出し、条件判断し、書き換える、といった処理は
可能なのでしょうか?

読む、判断だけなら、外部ファイルとしてインクルード? する方法が
あるようなのですが。

Aベストアンサー

読み出しも、書き換えはPHPやCGIやASPなどで行う
必要があります。受渡しはPOSTやGETになるでしょう。

この場合JavaScriptはインタフェースとして
利用することになるでしょう

Qメールフォームのデコード

AZAQ-NETのメールフォームデコードサービスを利用させてもらってるのですが、最近メールフォームから妙に広告が送られる事が多いのです。AZAQ-NETの不具合なのかどうかは分からないのですが、うっとうしいので、デコードが可能なCGIでも利用しようかと思っております(それで直るかは分かりませんが、前々からCGI設置にしようかとは思っていました)。

で、どのようなデコードが良いでしょうか?

希望としては、現在フォームが2、3箇所あるのですが、その送り先をCGIに変更して、送られてきた情報をデコードして指定のメールアドレスに送ってくれる、というのが欲しいです。

これまで探したCGIは、CGI自体にフォーム内容も記述されており、これを利用すると、これまでフォームを置いていたHTMLファイルをCGIに記述し直さないといけなくなります。



分かりづらい説明かもしれませんが、これまでのHTMLを変更せず、自前でデコードできる方法が欲しいのですが、ありますでしょうか。
(CGIじゃ無くても、デコード出来れば構いませんのですが)

よろしくお願い致します。

AZAQ-NETのメールフォームデコードサービスを利用させてもらってるのですが、最近メールフォームから妙に広告が送られる事が多いのです。AZAQ-NETの不具合なのかどうかは分からないのですが、うっとうしいので、デコードが可能なCGIでも利用しようかと思っております(それで直るかは分かりませんが、前々からCGI設置にしようかとは思っていました)。

で、どのようなデコードが良いでしょうか?

希望としては、現在フォームが2、3箇所あるのですが、その送り先をCGIに変更して、送られてきた情報をデコード...続きを読む

Aベストアンサー

ぼくはformdecorderがおすすめです。
手動ですが、使えると言ったら使えます。
フリーですが使いやすいです。
使い方は、
1、postdata.attが添付されているメールからpostdata.attを保存します。
2、そのpostdata.attを、formdecorderのドラッグします。
3、デコード完了!!
です。

参考URL:http://www.tocka.ne.jp/products/gix/fdec097.html

QJAVAソース中のJavaScriptチェックの不具合

JAVAソースで記述しているプログラムで
画面のボタン押下後にJavaScriptで入力チェックを行う処理を記述しているのですが、入力チェックを行っている気配がありません。
テストはIE6.0でセキュリティレベルは中低に設定してあります。
チェック処理の頭にALERTを入れているのですが、それすら表示されません。根本的な記述が足りないのかと思いますが、ヒントがあればご教授願います。情報が少なくて申し訳ないです。よろしくお願いします。

jspでの記述------
<input name="searchBtn" type="image" value=" " src="search.gif" onClick="doBTN('search'); return false;">

Aベストアンサー

画像をクリックしたときにdoBTNが実行されることを想定しているんですよね?

恐らく、doBTN 関数内に問題があるんじゃないでしょうか。
あるいは、typoなどでdoBTN関数が見えていないか。

もし、IEのみでデバッグしているのであれば、
Firefox + Firebugなどのツールを使うとどこで問題が起きているかわかりやすいと思います。

QDolbyDigital,DTSデコードについて。

DVDプレーヤーからアンプ(デコード機能付)に
RCAケーブル(紅白のケーブル)で接続しても
同軸ケーブルや光デジタルケーブルで接続したときと同様に
デコードは正しく行えるのでしょうか?
そうだとしたら音質はデジタル接続に比べて
いかがなものなのでしょうか?

Aベストアンサー

 ≪DVDプレーヤーからアンプ(デコード機能付)に RCAケーブル(紅白のケーブル)で接続しても 同軸ケーブルや光デジタルケーブルで接続したときと同様に デコードは正しく行えるのでしょうか? ≫ ・・・・  答え 『出来ません』

 マルチチャンネルで ドルビーデジタル又は dts収録されている DVD-Videoのソフトに限りますが・・・

 DVDプレーヤーとAVアンプは デジタル(同軸ケーブルか光ケーブル)にて結線してください。 プレーヤー側では デジタル出力のONと ドルビーデジタル及びDTSの信号が出力する様に設定してください。 

 アナログ接続でのサラウンド再生音と デジタル出力でのサラウンド再生音では 『雲泥の差』です。  シッカリ接続して シッカリ設定して 楽しまれて下さい。。  

  

QPHPとjavascriptで共通なエンコード方法

PHPからjavascriptにバイナリデータ(16バイト程度)を受け渡す
処理を作成しているのですが、うまく動作しないので、相談します。

バイナリデータをエンコードしてPHPからjavascriptに
以下の流れで引き渡しています。

(1)PHPのbase64_encodeでバイナリデータをエンコード
(2)エンコードしたデータをjavascriptに出力
(3)javascriptでデータをデコード

(3)のデコードには次のページのbase64.jsなど、いくつかの
デコード方法を試してみました。
http://www.onicos.com/staff/iz/amuse/javascript/expert/
しかしながら(1)の元のデータと(3)でデコードしたデータが
一致しません。
質問したいのは以下の2点です。

・PHPのbase64_encodeとjavascriptのbase64エンコードは
 一般的に方式が違うのでしょうか。同じbase64なので
 同じコードが生成されると考えたのですが、そうでは
 ないのでしょうか。
・base64_encodeでも、その他の方法でもかまわないので
 PHPとjavascriptで共通なエンコード方式、あるいは
 PHP上のバイナリデータをjavascriptに正しく受け渡す
 方法があれば教えて下さい。

よろしくお願いします。

PHPからjavascriptにバイナリデータ(16バイト程度)を受け渡す
処理を作成しているのですが、うまく動作しないので、相談します。

バイナリデータをエンコードしてPHPからjavascriptに
以下の流れで引き渡しています。

(1)PHPのbase64_encodeでバイナリデータをエンコード
(2)エンコードしたデータをjavascriptに出力
(3)javascriptでデータをデコード

(3)のデコードには次のページのbase64.jsなど、いくつかの
デコード方法を試してみました。
http://www.onicos.com/staff/iz/amuse/javascript/expert/
しか...続きを読む

Aベストアンサー

…とりあえず質問に直接答えます。

>・PHPのbase64_encodeとjavascriptのbase64エンコードは
>一般的に方式が違うのでしょうか。

一般も何もありません。Base64はこの世で一つです。言語の違いは関係なく、どの言語でも必ず同じ結果になります。


あなたは期待する結果にならない原因を言語の違いに求めようとしているようですがその可能性はまずありません。あなたのプログラムに間違いがあるのでしょう。その前提で何度も見直しましょう。

どうしても自分では見つけられないという場合には、ソースコードを張りましょう。そしてどのようなデータでうまく行かないのかを明示しましょう。


※個人的には、「バイナリデータ」と言っているのが実はマルチバイトの文字列の事で、サーバ側とクライアント側で文字コードが違ってしまっているだけという初歩的なミスである可能性が高いのではないかと推測します。

Qメールデコードのアドレスについて、

はじめて質問させて頂きます。
ニフティのメールデコードについてなのですが、 NAME="to_mail" VALUE="***@nifty.com"
の部分が、メールアドレス収集ロボットに見つけられてスパムを送りつけられないか?と思います。
ニフティ会員専用のメールデコードなのですから、何か「代替文字で表すので収集されない」
とかの方法は無いものでしょうか?

Aベストアンサー

エンコード方法は、決まっていて公開されています。
当然、その逆を行うデコード方法も公開されています。

その為、エンコードしておけば、減らすことは出来るでしょうが、メール・アドレス収集ロボットにデコード処理を組み込むことも、収集後にデコードすることも可能なので、確実にスパムを送られないようにすることは無理だと思います。

QjavascriptでEUCのエンコード

検索エンジン用のエンコードした文字列をjavascriptで処理しようとしています。

encodeURIComponent で処理するとUTF-8でエンコードされてしまい、思うような結果が得られません。

EUCでエンコードされた結果を得る方法は無いでしょうか?

ネットで探してみたのですがjavascriptだけで解決する方法を見つけられずに困っています。
javascript内で自作の関数を作ってもいいのですが、何かヒントがあればと思います。

よろしくお願いします。

Aベストアンサー

参考URLのライブラリを使ってみてください。
エンコード・デコード出来る優れものです。
Internet Explorer 5.0以上、Netscape 7、Operaなどで使用可能とのことです。

参考URL:http://nurucom-archives.hp.infoseek.co.jp/digital/escape-codec-library.html


人気Q&Aランキング

おすすめ情報