Unicodeの文字数を正しく数える
基本的には4つの数え方がある。
Unicodeの文字数を書記素単位で数える
1つの書記素は複数のコードポイントになることがある。
Unicodeの文字数をコードポイント単位で数える
UTF-8は1コードポイントが1~4バイトの可変長
UTF-16は1コードポイントが1~2ワード(2か4バイト)の可変長
Unicodeの文字数をワード単位で数える
UTF-16のサロゲートペアだと2ワードで1コードポイントになる。
Unicodeの文字数をバイト単位で数える
UTF-16は1ワードで2バイト、UTF-32では1ワードで4バイトになる。
UTF-8は1~4バイトの可変長。
JavaScript でそれぞれ数える方法
https://bugbearr.github.io/clientwebexp/js/character_code/character_count/
いわゆる人間が目にする「文字」の単位であれば、「書記素」単位になる。
バックスペースキーで消える単位やカーソルキーの移動の単位になるが、これもやや不正確。
合字のようなものでは分解される可能性があるため。
単語に使われる文字をつなげる言語体系がある。この場合でも「つなげない」のが書記素になる。
https://ja.wikipedia.org/wiki/デーヴァナーガリー
देवनागरी
1単語として表記上つながっているが、書記素では5文字になる。
https://gyazo.com/867090f176094c06484a3b902367e73d
#文字列操作API
関連
文字列のテスト用データ