しょぼいマシンで自作プログラミング言語を作ってみる (9)

文字コード解析について

UTF-8もサポート対象に

 コメントとか出力文字について、日本語などのマルチバイト文字を表示させたいので、UTF-8についてもサポートするようにします。

 UTF-8は1バイトから4バイトの長さでエンコードされています。
 あらためて、ざっくりとUTF-8についておさらいしますと?

 1バイト文字(UnicodeコードポイントU+0000からU+007F)は該当の文字の最上位ビットが0となってます。0x00から0x7fの範囲に収まっています。
 2バイト文字(UnicodeコードポイントU+0080からU+07FF)は該当の文字について、1バイト目の上位3ビットが110、2バイト目の上位2ビットが10となっています。0xc080から0xdfbfの範囲に収まっています。
 3バイト文字(UnicodeコードポイントU+0800からU+7FFF)は該当の文字について、1バイト目の上位4ビットが1110、2バイト目から3バイト目の上位2ビットが10となっています。0xe0a080から0xefbfbfの範囲に収まっています。
 4バイト文字(UnicodeコードポイントU+0800からU+7FFF)は該当の文字について、1バイト目の上位5ビットが11110、2バイト目から4バイト目の上位2ビットが10となっています。0xf0908080から0xf48fbfbfの範囲に収まっています。

 ということで、文字列を1バイトずつ走査して、その様になっているかどうかを判定して、入力された文字バッファの最後まで行ったらUTF-8であるという認定をするようにしました。

 とりあえず、今回もかなり短いですが、ここで終えます。

いいなと思ったら応援しよう!