萌えハッカーニュースリーダー

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

出典: https://iamvishnu.com/posts/utf8-is-brilliant-design
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

正解!…って、ロボ子、真面目すぎ!正解は「なかったことにする!」…というのは冗談じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search