平成24年度春期 応用情報技術者試験 午前 問4
Unicode文字列をUTF-8でエンコードすると,各文字のエンコード結果の先頭バイトは2進表示が0又は11で始まり,それ以降のバイトは10で始まる。16進表示された次のデータは何文字のUnicode文字列をエンコードしたものか。 CF 80 E3 81 AF E7 B4 84 33 2E 31 34 E3 81 A7 E3 81 99
- ア 9
- イ 10
- ウ 11
- エ 12
解答・解説を見る
正解:ア
AI解説
UTF-8 では、1文字のエンコード結果の先頭バイトは2進で 0(1バイト文字)または 11(多バイト文字の先頭)で始まり、2バイト目以降の継続バイトは 10 で始まる。つまり文字数=先頭バイト(0 または 11 で始まるバイト)の個数である。16進で 0x80〜0xBF が継続バイト、それ以外が先頭バイトなので、CF/E3/E7/33/2E/31/34/E3/E3 の9個が先頭バイトとなり9文字である。 ア: 正解。先頭バイトは CF, E3, E7, 33, 2E, 31, 34, E3, E3 の9個で、9文字(πは約3.14です)である。 イ: 10 は継続バイトの一部を文字として数えた誤りである。 ウ: 11 も継続バイト(80, AF, 84, A7, 99 など)を誤って数えた値である。 エ: 12 も同様に継続バイトの混入による誤りである。 💡 16進の値で機械的に判定する。0x00〜0x7F は1バイト文字、0x80〜0xBF は継続バイト(数えない)、0xC0 以上は多バイト文字の先頭。先頭バイトだけを数えれば文字数になる。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。