21963


UTF-8でマルチバイト以外の文字列は何があるでしょうか？

・半角英数字

・半角カナも該当するのでしょうか？


CC BY-SA 3.0
2016-02-11T02:52:12.600
21960
2016-02-11T04:21:41.593
2016-02-11T04:21:41.593
8000
7886
question
unicode
UTF-8でマルチバイト以外の文字列は何？　半角カナは該当する？


UTF-8の1バイト文字は[ASCII文字セット](https://ja.wikipedia.org/wiki/ASCII)と同一になるように設定されています。従って128個の半角英数字および記号と制御文字が含まれ、半角カナは該当しません。


CC BY-SA 3.0
2016-02-11T03:02:53.310
21961
2016-02-11T03:10:57.613
2016-02-11T03:10:57.613
5750
5750
21960
answer


文字列を取り扱う場合に、「マルチバイト」と言うのは取り扱うライブラリーやフレームワーク側の用語で、UTF-8自体には「マルチバイト」と言う概念はありません。また「何をもって１文字と考えるのか」がやたら複雑になってきている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](https://ja.wikipedia.org/wiki/UTF-8)等でもわかりますので、お調べ下さい。)

従って、あなたの言い方に合わせれば「半角英数字はマルチバイトではないが、半角カナはマルチバイトである」と言うのが回答になります。


CC BY-SA 3.0
2016-02-11T03:14:30.367
21963
2016-02-11T03:14:30.367
13972
21960
answer