UTF-8とは、Unicodeの文字符号化形式/文字符号化方式の一つである。
UTF-8とは、Unicodeの文字符号化形式/文字符号化方式の一つで、1文字は1〜4バイトのバイト列で表現される。最大の特長は、英数文字だけの場合はASCIIと完全互換(というか全く同じ内容)になることである。
Unicode文字の表現形式として広く用いられており、デファクトスタンダードであるとも言える。
ただ、これらの長所・短所もコンピューターの性能向上や大容量化、あるいはデータ構造の工夫等により問題になる場面は少なくなっている。実際の所、みんながUTF-8を標準で使うようにすればもう文字コードや文字化けで悩まなくてもいいよね、という側面が大きい。
1バイトを0と1に直した時、先頭からいくつ1が連続するかで役割が決まる。
1バイトの割当を円グラフにすると以下のようになる。
| 0-31, 127 | 制御文字 | |
| 32-126 | 英数記号 | |
| 128-191 | 2バイト目以降 | |
| 192-193 | 不使用(2バイト文字先頭) | |
| 194-223 | 2バイト文字先頭 | |
| 224-239 | 3バイト文字先頭 | |
| 240-244 | 4バイト文字先頭 | |
| 245-247 | 不使用(4バイト文字先頭) | |
| 248-255 | 不使用(5バイト以上相当) |
1バイト文字については、ASCIIと同じである。2バイト以上の文字は、先頭に使用バイト数を決めるデータが来て、後ろにデータが続く。
1バイトの内訳は以下のようになる。
0-127(00-7F): 1バイト文字ASCII
7ビット
0-31と127は制御文字(改行コードなども含んでいる)
194-223(C2-DF): 1バイト目。C0とC1(192-193)は最小バイト数の原則に反するため使用されない。
128-191(80-BF): 2バイト目以降(実際には最小のバイト数で表現するという規則により使用されない値がある。) 6ビット
11ビット
224-239(E0-EF): 1バイト目
160-191(A0-BF): 2バイト目
128-191(80-BF): 3バイト目
16ビット
240-244(F0-F4): 1バイト目
245-247(F5-F7)はUnicodeの上限値を超えるため使用されない。
21ビット
5バイト文字と6バイト文字は先頭バイトをそれぞれ
248-251(F8-FB)、252-253(FC-FD)にすれば実現可能だが、やはり最小バイト数の原則に反するかUnicodeの上限値を超えるため使用されない。
254-255(FE-FF): 5バイト文字と6バイト文字と同じく使用されないが、UTF-16やUTF-32のバイトオーダーマークと被るという事情もある。
BOM(Byte Order Mark)と呼ばれる。
Byte Orderというのはデータを上位バイトから順に並べるビッグエンディアンと下位バイトから並べるリトルエンディアンを区別するという意味だが、
データを先頭の2-4バイトを読めば符号化形式が分かるようにする仕組みも兼ねている。
UTF-8では使用が許容されるというだけで推奨ではない。むしろ、ASCIIとの互換性が損なわれるので対応していない処理系も多い。
ちなみにUTF-8のBOMはEF BB BF(239 187 191)である。
1110 1111 1011 1011 1011 1111
1111 11 10 11 11 1111
U+FEFF: ZERO WIDTH NO-BREAK SPACE (ZWNBSP) は、改行禁止を表す零幅文字。
FE-FFはUTF-16とUTF-32でしか使われないので、
Windowsのメモ帳はBOMなしUTF-8の編集時に勝手にBOMを付加することで悪名高かったが、2019年5月のメジャーアップデートからBOMなしUTF-8がデフォルトになった。英数字だけだとASCIIと全く同じデータになるので、ASCIIだと思って解釈していたら突然2バイト文字が出てきてバグったなどという事態を避けるため、区別できるようにとBOMをつけていたのかもしれない。
急上昇ワード改
最終更新:2026/01/31(土) 11:00
最終更新:2026/01/31(土) 11:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。