[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で出力するイメージはエンコードされて
なくてもいいはずです。(もちろん表示可能文字に限りますが,,,)

って 説明になってれば いいのですが、、、、
まちがってたら 有識者のかたは 訂正してくださいね。

おやくにたちましたかどうか、、