質問: UTF-8でマルチバイト以外の文字列は何があるでしょうか? ・半角英数字 ・半角カナも該当するのでしょうか?
回答: 文字列を取り扱う場合に、「マルチバイト」と言うのは取り扱うライブラリーやフレームワーク側の用語で、UTF-8自体には「マルチバイト」と言う概念はありません。また「何をもって1文字と考えるのか」がやたら複雑になってきているUnicodeの世界で「マルチバイトの文字列」と言う言い方では一体何を表現したいのかわからなくなるので、ここでは「UTF-8表現で2バイト以上で表現されるUnicodeのコードポイント」と言う観点で回答しておきます。 (ちなみにUnicodeのコードポイントはU+0000〜U+10FFFF(一部抜けあり)の16進数で表現出来るので、そちらの表記を使用します。) 簡単に言うと **UnicodeのコードポイントでU+0000〜U+007Fの範囲にある文字はUTF-8で1バイトで表現される。それ以外の範囲の文字は2バイト以上となる** というのが結論です。 まず、通常日本の技術者が「半角英数字」と言うASCII互換のアルファベットおよび数字は、UnicodeコードポイントでU+0030〜U+0039(数字),U+0041〜U+005A(英大文字),U+0061〜U+007A(英小文字)は、いずれも1バイトで表現される範囲に入っています。 一方「半角カナ」と呼ばれる文字はU+FF61〜U+FF9F(いわゆる半角のカナ記号を含む)に存在しますので、UTF-8表現された場合には3バイト必要となります。 (どのコードポイントの文字が何バイトになるかについては、日本語版のWiki等でもわかりますので、お調べ下さい。) 従って、あなたの言い方に合わせれば「半角英数字はマルチバイトではないが、半角カナはマルチバイトである」と言うのが回答になります。