2006年09月17日

エンコード・デコード

クッキーに保存できるのは、コンテンツに対し、20項目しか許されていない。
曲リストに許されているのは30曲までであるので、1曲を1項目に割り当てていたのでは、当然足りない。
何らかの方法で、曲リストの全てのデータを、1項目か、2項目に押し込める必要がある。

クッキー全体の容量は、4KByteらしいので、1曲100Byteと考えると、3KByteである。
1曲100Byteが適切なのか分からないし、3KByteも使うと他のクッキーを押しのけてしまうかも知れない。
が、このくらいの仕様でいいのではないだろうか。
実は<ysfactory WMP window/yf-wmp-wnd>の、最大30曲と言うのもこのあたりから出た仕様である。

曲の、ファイル名(URL)リストと、曲名(表示名)リストを、カンマで区切り、つぎのように別々に保存する方式をとる。
SongFileList=<songFile00>,<songFile01>,...;
SongNameList=<songName00>,<songName01>,...;
読み出す際はファイルリストを中心に考え、ファイルリストにあって、曲名リストにない曲は存在すると認め、曲名リストにあるが、ファイルリストにない曲 は、存在しないと扱う。

さて、区切りのために、イコール(=)や、カンマ(,)、セミコロン(;)を使うため、ファイル名や、曲名にそれらの文字を含むことが出来ない・・。
私は最初この克服のために、自前でエンコードと、デコードをしなくてはならないと考えていたが、結果的にそうではなかった。
そもそも、クッキーには、漢字などの特殊コードをそのままでは保存できない。JavaScriptではそのために、escape( )と、unescape( )が用意されている。
escape( )と、unescape( )は、カンマ(,)の面倒もちゃんと見てくれる。
escape( )と、unescape( )は、互換性の点で少々問題があるようである。JavaScriptのバージョンによって仕様が違ったり、他の処理系との親和性が悪かったりするようであ るが、今回の、同じスクリプトから読み書きする目的なら、大きな問題ではないと思う。

イコール(,)や、セミコロン(;)は、クッキーに保存するときの一般的な仕様である。
残る問題はカンマ(,)が、クッキーに保存するのにふさわしいかどうかである。
escape( )と、unescape( )の目的は、通信プロトコルを上手く通すためにもあるようである。
今回はローカルマシーンで実行されているJavaScriptから、ローカルマシーン上のクッキーに読み書きする訳だから、私の認識では通信プロトコルを 通らない。
基本的に文字列を保存するクッキーが、カンマ(,)を保存しないことも考えにくいので、これも特に問題は無いと思う。
この記事へのコメント
慕容風水を保持している一方で、過去、レグルス詩人のタイム滴はベッドの横にうずくまって、彼らはビットで慕容風水ビットの思い出と対話します。愛することを知人から [url=http://www.bag-whoevers.com/]ferragamo カチューシャ[/url] <a href="http://www.bag-whoevers.com/" title="ferragamo カチューシャ">ferragamo カチューシャ</a>
Posted by ferragamo カチューシャ at 2013年08月06日 11:55
エンコード・デコード: プログラムスローライフ {oakley for sale|oakley sunglasses|cheap oakley sunglasses|cheap oakleys|oakley sunglasses online|oakley sunglasses outlet|oakley sunglasses sale} http://www.discountsunglassesshopoutlet.com/ [url=http://www.discountsunglassesshopoutlet.com/]cheap oakleys[/url] <a href="http://www.discountsunglassesshopoutlet.com/" title="cheap oakleys">cheap oakleys</a>
Posted by cheap oakleys at 2013年08月06日 21:42
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。