[備忘録][Cording][基礎知識]文字種の基礎知識
文字種一覧
種類 | 説明 | 例 | Unicode範囲 | バイト数(UTF-8/UTF-16) |
---|---|---|---|---|
ASCII | 半角英数字・記号 | A, 1, @ | U+0000-007F | 1/2 |
半角カタカナ | JIS X 0201カタカナ | ア, カ, ン | U+FF61-FF9F | 3/2 |
基本ラテン文字拡張 | アクセント付きラテン文字 | é, ñ, ü | U+0080-00FF | 2/2 |
ひらがな | 日本語ひらがな | あ, い, う | U+3040-309F | 3/2 |
カタカナ | 日本語カタカナ | ア, イ, ウ | U+30A0-30FF | 3/2 |
漢字 | CJK統合漢字 | 日, 本, 語 | U+4E00-9FFF | 3/2 |
結合文字 | アクセント記号など | ◌́, ◌̈, ◌̃ | U+0300-036F | 2/2 |
異体字セレクタ | 漢字の異体字指定 | 辻󠄀, 神󠄁 | U+E0100-E01EF | 3+4/2+2 |
絵文字 | 絵文字基本セット | 😀, 🌟, 🎈 | U+1F300-1F9FF | 4/4 |
絵文字修飾子 | 肌の色など | 👶🏻, 👶🏽, 👶🏿 | U+1F3FB-1F3FF | 4+4/4+2 |
サロゲートペア | 追加文字面の文字 | 𠮟, 𩸽 | U+10000-10FFFF | 4/4 |
ZWJを使った絵文字 | ゼロ幅接合子 + 複数のコードポイントで構成 | 👨👩👦, 👨💻 | U+200D | 3/2 |
曲者文字一覧
文字 | コードポイント | 補足 |
---|---|---|
é̳̲̥̤ | 5 | 結合文字を含む文字(ラテン文字 + 複数の結合文字) |
한 | 1 | ハングル音節文字 |
क्षि | 4 | ヒンディー語などで使われる文字(複数の文字要素の組み合わせ) |
🏴 | 5 | 国旗絵文字 |
👨👩👧👦 | 7 | ZWJ(Zero Width Joiner)と複数のコードポイントで構成する文字列 |
曲者文字によって文字数カウントが狂わされないようにするためには
① 変な文字を許容しない
- 扱うデータの性質によっては半角英数字のみ、数字のみ、など入力できる文字種が制限されるため、そういう情報はそもそも入力させないのが吉(正規表現で簡単にできる)。
- さらに広くしてひらがな、カタカナ、漢字を許容するのであれば、正規表現またはUnicodeによって制御ができる
② 書記素でカウントする
- javascriptであれば
Intl.Segmenter
を使ってカウントできる(参考: String: length)- ※比較的最新のブラウザしか対応していないので注意が必要
参考資料