WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:クッキーでのエンコード・デコードについて

0:[投稿] たくちゃん [2005/12/27 11:56 ] [環境:IE6 わからない]

はじめてホームページを作っています。それで、クッキーを作っているのですが、javascriptとperlではURLエンコーディング・デコーディングの仕方が違うのを知りました。javascript・perl両方で書き込み読み込みができるように共有化させたいのです。そこでjavascript・perl双方に同様の仕方でエンコード・デコードをしなければいけないと思うんですが、その仕方(プログラム)がわかりません。
perlでは
エンコード
$s=~s/(^a-zA-Z0-9*\-.\@_])/sprintf("%%%02X",ord($1))/eg;
$s=~tr/ /+/;
デコード
$s=~tr/+/ /;
$s=~s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C",hex($1))/eg;
ですので、それに合った
javascriptでのエンコード・デコードの仕方を
知りたいのですが、
何方か教えて頂けないでしょうか?


1:[回答] miz [2005/12/27 21:56 ]

encodeURI/decodeURI
encodeURIComponent/decodeURIComponent
文字コードはページの文字コードがなんであってもutf-8に変換してencode
decodeはutf-8であるとしてデコードされます。
perl側でのcookie読み出し書き込み時にはお気を付け下さい。

参考
http://jsgt.org/ajax/ref/charset_test/responsetext/php/urlencode.php
http://www.cresc.co.jp/tech/java/URLencoding/JavaScript_URLEncoding.htm


2:[回答] たくちゃん [2005/12/30 07:41 ]

ご返答ありがとうございます。
紹介して頂いたページを見ましたが初心者の私には
今ひとつ、よくわかりません。
つまり、perlで行われてるURLエンコードデコードのやり方は
javascriptではできないということで
UTF8に統一して
エンコードデコードするしかないということなんですね。
使ってるperlは5.8以降なのでUTFが使えるということまでは
知っているのですが、どういうコードや
モジュールを使えばUTF8でエンコード・デコード
できるのかわかりません。
javascriptとperlそれぞれの
UTF8へのエンコードデコードのコードを
教えて頂けないでしょうか?


3:[回答] m035 [2005/12/30 17:16 ][URL]

js:
http://nurucom-archives.hp.infoseek.co.jp/digital/trans-uri.html
perl:
http://lss.eternity.ne.jp/new/class.php?349
これで出来ると良いけれど、使ったことはありません。


4:[回答] AC1号 [2006/01/01 13:07 ]

javascript/jscript:
>>1 でmizさんが述べているとおり、javascript(ECMAScript)では文書をUTF-8として扱います。こちらでは文字コードを気にせずに encodeURIComponent/decodeURIComponent を使えばいいです。

perl:
5.8以降と分かっているので、Encode.pmを使えばよいです。
http://digit.que.ne.jp/work/index.cgi?Encode
URLEncodeを行う部分については、スペースを(+ではなくて)%20に変換するようにすれば、>>1のリンク先で指摘されている問題はクリアできます。なお、>>0のソースは、スペースを+に変換しようという意図のようですが、その意図に反して%20に変換されるようです。つまり、文法エラーを修正すれば問題ありません。


5:[回答] たくちゃん [2006/01/04 09:30 ]

ご返答有難うございます。
encodeURIComponent/decodeURIComponentと
互換性のあるperl上でのコードとしてEncode.pmがあると
いうことですが、具体的なコードを示して
頂けないでしょうか?
作っているページの文字コードはEUCです・・・・
お願いします。

回答(必須): 状態:

お名前(必須):

URL:




[戻る]