タグ

JavaScriptとunicodeに関するysk_lucky-starのブックマーク (3)

  • JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io

    Intro textarea などに入力された文字数を、 JS で数えたい場合がある。 ここで .length を数えるだけではダメな理由は、文字コードや JS の内部表現の話を理解する必要がある。 多言語や絵文字対応なども踏まえた上で、どう処理するべきなのか。 それ自体は枯れた話題ではあるが、近年 ECMAScript に追加された機能などを交えて解説する。 なお、文字コードの仕組みを詳解すること自体が目的では無いため、 BOM, UCS-2, Endian, 歴史的経緯など、この手の話題につき物な話の一部は省くこととする。 1 文字とは何か Unicode は全ての文字に ID を振ることを目的としている。 例えば 😭 (loudly crying face) なら 0x1F62D だ。 1 つの文字に 1 つの ID が割り当てられているのだから、文字の数を数える場合は、この ID

    JavaScript における文字コードと「文字数」の数え方 | blog.jxck.io
    ysk_lucky-star
    ysk_lucky-star 2017/03/03
    👨‍👩‍👧‍👦←はてブだと8文字だ
  • なぜ絵文字を含む文字を1文字ずつに分けるのにArray.fromだけで十分なのか? - Qiita

    「Node.js で絵文字を使う時の注意点 - Qiita」にコメントしたのですが、大雑把すぎて説明になっていない気がするので、詳細に解説したいと思います。 TL;DR 絵文字のようなサロゲートペアを含む文字列をJavaScriptで扱おうとすると面倒。 ↑ s.length、s[0] とか s.split('') とかがおかしくなる。 1文字ずつに分割したいときは Array.from が使える。 なぜなら、Array.from は内部的に for of 文のようなことをしていて、文字列に対する for of はサロゲートペアを考慮するから。 問題点と解決まで 絵文字を含む文字、つまりUTF-16のサロゲートペアを含むような文字を一文字ずつに分割したい場合、JavaScriptでは問題が生じます。つまり、どういうことかというと、 const kira = 'キラッ🌠' // 見ため上は

    なぜ絵文字を含む文字を1文字ずつに分けるのにArray.fromだけで十分なのか? - Qiita
  • ユニコード文字プロパティについて - JS.next

    概要 正規表現でひらがなにマッチさせる場合によく「 /[ぁ-ん]/ 」とするが、これを「 \p 」エスケープ表現を使って、 「 /\p{Block=Hiragana}/u 」のように分かりやすく書けるようにするための新たな仕様がV8で実装された。 基 文字の分類には様々なものがあり、その分類名nameと、その分類での値valueを使って、 「 /\p{name=value}/u 」のように記述する。 hiragana = /^\p{Script=Hiragana}+$/u // スクリプト(言語文字種)分類:平仮名 console.log( hiragana.test( 'あいうえお' ) )  // true console.log( hiragana.test( 'aiueo' ) ) // false // 分類名や値には大抵略称が1つ、または複数設定されており、そちらも使える h

    ユニコード文字プロパティについて - JS.next
    ysk_lucky-star
    ysk_lucky-star 2016/04/21
    これはカオス臭がする
  • 1