[PHP-users 10452] Re: エンコード関数の使い分けはある?
SAWAI-teto-Shoosukay
php-users@php.gr.jp
Wed, 2 Oct 2002 11:20:45 +0900
さわいです。
> 田中@MCと申します。
>
> PHP関数には
>
> urlencode()
> base64_encode()
>
> の2種がありますが、明確な使い分けの決まりは
> あるのでしょうか?
そもそもなんでエンコードするかですが、
バイナリデータをはテキストデータとして透過させるために
エンコード法が考えられたと思います。
BASE64と URLエンコードでは 使える文字セットが違います。
それぞれで エンコードしたらどうなるのかを
みれば どっち使おうとか わかると思います。
URLエンコードは URLにデータをつんで渡すときに
使われるのでURLで利用可能な文字をつかって
バイナリを表現します。
BASE64は表示可能なASCII文字(だよね)をつかって
文字コード、バイナリの区別無くエンコードします。
さらにいうと
> base64の方がサイズが33%大きくなるという説明が
> ありますが、特に渡すデータが単なるパラメータであり、
> サイズを気にする必要(厳密には小さい方が望ましい
> のですが)のない程度の場合などに、使い分けの線引き
> というようなものがあるのかということです。
エンコードの方法(手法)にはもっとたくさんあります。
uuだってishだって バイナリを表示可能文字へエンコード
してくれます。
いわゆるWEBのリンクにデータをつむときにGETメソッドで
データを受け取りたいときに URLエンコードをつかわないと
ただしくデータがうけとれないという問題が発生する
可能性があるわけですね。
POSTメソッドではデータはブラウザが URLエンコードして
送信してくるので PHPで出力するイメージはエンコードされて
なくてもいいはずです。(もちろん表示可能文字に限りますが,,,)
って 説明になってれば いいのですが、、、、
まちがってたら 有識者のかたは 訂正してくださいね。
おやくにたちましたかどうか、、