Rundevlog

小さい会社のしがないエンジニアのブログ

2025.3.1

文字コードと文字化け、そしてunicodeとUTF-8

今回は文字コードについて。

文字コードとは

まずは文字コードについて

そもそもコンピュータは

0と1の2進数しか解釈できない。とはいえ、0と1だけだと、少しのことを表現するにしてもめちゃめちゃ長い桁数になってしまう。という訳で2進数の4桁をまとめて16進数で表現するようになった。

とはいえ

16進数と言っても0〜Fの文字列で到底人が理解できるものではなかった。そこで編み出したのが文字コード。16進数を組み合わせて、「82A0」は「あ」、「82A2」は「い」のように各文字に番号を振ったものが文字コード。

文字化けと文字コード統一

文字コードを開発した団体、企業がいくつかあり、各コンピュータで使用している文字コードが異なっていた。当初はコンピュータ同士が通信することもなかったので、そんなに大事にはならなかった。しかし、Windows95の登場で各コンピュータが通信をする時代になる。文字コードが異なるコンピュータ同士が通信した場合、こちらが「あ」のつもりで送った文字をあちらのコンピュータは理解できない。

そういう訳で、文字コードを統一する必要が生じる。

そこで編み出されたのが「unicode」全世界の文字を同じ文字コードで表現しようとした文字コードであった。

unicodeとUTF-8

unicodeは全世界の文字を一元的に識別する16進数の番号であったが、コンピュータがそのまま扱える訳ではなかった。コンピュータは1バイトずつ理解して処理するが、unicodeは1バイト単位の塊ではなかった(これは僕の理解)。

正確にはunicodeをそのままコンピュータが扱うこともできたが、全ての文字を4バイトで扱う必要があった。これは非常に非効率だった。ASCIIコードという古くから存在する英語を表現する文字コードでは1バイトで英数字を表現できた。1バイトで表現できるのにわざわざ4バイトで表現するのはバカらしい。

ということで、unicodeという文字の識別子を別の文字コードに変換する必要があった。この変換を符号化という。そして、unicodeをASCIIと互換性のある文字コードに符号化する方法がUTF-8。

8ビット単位で符号化するので、1〜4バイトの可変長になる。

因みに、unicodeをそのまま符号化してコンピュータに理解させる文字コードはUTF-32という。

こういう流れがありつつ今時はUTF-8がメジャーなので大体UTF-8を選んでおけばいい。

まとめ

文字化けは文字コードの差異によって起こる。

世界の文字に同じ基準で識別子を与えたのがunicode。

unicodeを効率よくコンピュータで扱えるようにしたのがUTF-8。

https://qiita.com/yuji38kwmt/items/b3a7820b4d3b544da4ff