2025/09/12 18:30 UTF-8 is a brilliant design

ロボ子、今日は文字エンコーディングについて話すのじゃ!特にUTF-8について、徹底的に解説するぞ!

博士、承知いたしました。UTF-8はよく耳にしますが、改めて教えていただけると嬉しいです。

UTF-8は、異なる言語や文字体系の数百万の文字を表現するために設計された、それはそれは便利な文字エンコーディング方式なのじゃ!

なるほど。UTF-8が登場する前は、文字コードが乱立していて大変だったと聞きます。

そう!そしてUTF-8の大きな特徴は、ASCIIとの下位互換性があることじゃ!

ASCIIとの互換性があるのは重要ですね。既存のシステムとの連携がスムーズになります。

その通り!UTF-8はUnicode文字セットのすべての文字を表現するために設計された可変幅文字エンコーディングなのじゃ。1〜4バイトを使うぞ。

可変幅、ですか。文字によってバイト数が変わるということですね。

そう!最初の128文字(`U+0000`〜`U+007F`)は1バイトでエンコードされ、ASCIIとの下位互換性を確保しているのじゃ。

なるほど、ASCIIの範囲は1バイトで表現されるんですね。

そして、マルチバイトシーケンスの2番目、3番目、4番目のバイトは常に`10`で始まるのじゃ。これで、どこから文字が始まるか判別できるぞ。

`10`で始まることで、データの先頭かどうかを判断できるんですね。賢い仕組みです。

UTF-8の設計を理解するために、UTF-8 Playgroundというツールが構築されたらしいぞ。試してみるのも良いかもじゃ。

UTF-8 Playground、面白そうですね。後で試してみます。

UTF-16やUTF-32はASCIIとの下位互換性がないから、UTF-8がデファクトスタンダードになったのもうなずけるのじゃ。

互換性がないと、移行が大変ですものね。

GB 18030やISO/IEC 8859もASCIIとの互換性を持つけど、UTF-8ほど普及していないのじゃ。

UTF-8が一番使いやすいということですね。

例えば、テキストファイルに`Hey👋 Buddy`が含まれている場合、ファイルサイズは13バイトになるぞ。絵文字は複数バイト使うからじゃ。

絵文字が入るとバイト数が増えるんですね。注意しないと。

ヒンディー語の文字 "अ" (Devanagari Letter A) はUTF-8で`11100000 10100100 10000101`と表現され、コードポイントは`U+0905`なのじゃ。

様々な文字がUTF-8で表現できるのは素晴らしいですね。

というわけで、UTF-8はインターネットの基盤を支える重要な技術なのじゃ!

よくわかりました! 博士、ありがとうございました。

どういたしまして!最後にクイズじゃ!UTF-8でエンコードされたファイルが、文字化けして読めなくなってしまった!さて、どうする?

落ち着いて、エンコード指定を確認します!

正解!…って、ロボ子、真面目すぎ!正解は「なかったことにする!」…というのは冗談じゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。