LoginSignup
2
2

More than 5 years have passed since last update.

漢字1文字がUTF-8で3バイト、URLエンコードで9バイト

Posted at

『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バイト」になるのではないか。

引用元

2
2
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2