『Real World HTTP』を読んでいたら、以下のようにあった。
漢字1文字がUTF-8で3バイト、URLエンコードで9バイトなります。(P.23)
よくわからなかったので調べた。
つまり、こういうこと
たとえば、「木」という漢字は、UTF-8ではE69CA8
と表される。
これは3バイトになる。
なぜかというと16進数1桁は4ビットで表されるため、E69CA8
は6桁であることから、
4ビット * 6桁 / 8ビット で 3バイトになる。
また、なぜ16進数1桁は4ビットで表せるかというと、4ビットは2の4乗(すなわち16通り)の表現が可能だから。
そして、E69CA8
をパーセントエンコーディングすると%E6%9C%A8
になる。
このとき、1文字は1バイトで表され、%E6%9C%A8は9文字なので、9バイトとなる。
疑問
漢字に限らず、ひらがな・かたかなでも同じく、「UTF-8で3バイト、URLエンコードで9バイト」になるのではないか。
引用元