senooken JP Social
  • FAQ
  • Login
senooken JP Socialはsenookenの専用分散SNSです。
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Conversation

Notices

  1. インスタンス終身独裁官 (glorificatio@mstdn.glorificatio.org)'s status on Thursday, 11-Apr-2019 01:43:14 JST インスタンス終身独裁官 インスタンス終身独裁官

    UnicodeからUTF-8への変換を手でやってみる | Divide et impera https://glorificatio.org/archives/3532

    In conversation Thursday, 11-Apr-2019 01:43:14 JST from mstdn.glorificatio.org permalink

    Attachments

    1. UnicodeからUTF-8への変換を手でやってみる
      By ソウタロウ from Divide et impera
      文字コードの一つであるUTF-8 そしてUnicodeこの2つをごっちゃになっている人もいるかもしれない。 これは相互に関係はあるが、コードは別のものになっている 簡単にいえばUnicodeは文字の集合、大規模な文字セットの規格で、UTF-8はUnicodeを符号化する方式の一つという位置づけになっている。 Unicodeでは文字一つ一つに対してコードを割り当てているが、そのコードがUTF-8のコードになるわけではない。 なので、UTF-8で書かれたテキストをバイナリエディタで開いてコードをみて、Unicodeのコードを調べても全く別のものがかかれている。 変換の手順 どのような仕組みでunicodeからUTF-8に変換されるのか、説明しよう。 Unicodeのコードがどの範囲にあるかによって変わってくる。 Unicodeのコードの範囲によって4つのパターンに分けられる。コードをまず2進数に変換して、それぞれの範囲によってビット数が決まっている。上記表はそれぞれの範囲の最低値と最大値を2進数に変換した表だ。 7Fまでは7bit77Fまでは11bitFFFFまでは16bit1FFFFFまでは21bitとなっている。 それぞれを上記表と同じように分割をする。7Fだったら一つだけ、1FFFFFだったら、3桁1つと6桁3つの4つに分割をする。 その後はそれぞれを16進数に変換し直す。 4つの範囲のそれぞれの最小値と最大値を16進数で表したのが上記の表になる。 これに更にそれぞれの数値に特定の値を足していく。それが次の表 たとえば7Fまでの範囲の文字ならば何もたさない。7FFまでの範囲の文字ならば1バイト目はC0を足して、次は80を足す。もちろん80は16進数なので、紛らわしくなく書くならば0x80を足す。 それぞれのバイトに決められた値を足すと、各unicodeの範囲に対して、UTF-8の値の範囲は上記表のようになる 例えば神という字で変換すると 神という漢字のunicodeのコードはu+795Eだそうだ。これは3バイト文字の範囲になるので、二

    Feeds

    • Activity Streams
    • RSS 2.0
    • Atom
    • Help
    • About
    • FAQ
    • TOS
    • Privacy
    • Source
    • Version
    • Contact

    senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.

    Creative Commons Attribution 3.0 All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.