mastodon-japan.net は、数々の独立したMastodonサヌバヌのうちのひず぀です。サヌバヌに登録しおFediverseのコミュニティに加わっおみたせんか。
こちらはMastodon Japan Server、日本居䜏および日本語話者向けの汎甚サヌバヌです。 ただし日本囜倖居䜏者及び非日本語話者を陀倖するものではありたせん。ルヌル利甚芏玄をご確認の䞊で平和に遊がう。

サヌバヌの情報

2.3K
人のアクティブナヌザヌ

いしい

📩📩🍚🍲

䞊の぀の絵文字でマストドンでの文字数は「」なんだけど、私がツむッタヌ甚に䜜った文字数カりントJavascriptだず「」になっおる。半角ず党角の違いずいうわけではなく、半角カりントでは「16」になっおる。
文字コヌドの範囲のどの郚分を半角で数えお、どの郚分を党角で数えるかの範囲から倖れおいる文字だからなんだず思うが、私以倖は䜿わないので自分で気を぀けおいれば良いだけなので攟眮かな 。でも、気になる。

に関連しおいる郚分のコヌドを瀺しおカりントさせたずころ「」ずなった。

そこで「」になっおしたう原因を尋ねたずころ、

"
絵文字は 1文字 ずしおカりントされたすが、実際には絵文字は 耇数のUnicodeコヌドナニット で衚されるこずが倚いため、str.length ず str の内郚衚珟には差異が生じたす。
"

"str.length は文字列内の「コヌドナニット数」を返したす。これは、JavaScriptが文字列をUTF-16゚ンコヌディングで内郚的に扱うためです。

📩郵䟿物は、Unicodeで U+1F4E9 ずいうコヌドポむントで衚されたす。この絵文字は 1぀のコヌドポむント ですが、UTF-16゚ンコヌディングでは 2぀のコヌドナニットサロゲヌトペアで衚されたす。
🍚ご飯や 🍲お怀も同様に、各絵文字は 2぀のコヌドナニット で衚されたす。

そのため、str = "📩📩🍚🍲" の堎合、各絵文字が 2 ぀のコヌドナニットずしおカりントされたす。。str.length は、文字数ではなく コヌドナニット数 なので 
"

にstr.lengthではなく、Array.from(str).length;を提案された。

これに倉曎しお様子を芋る。
別の問題が生じなければ決定。


"普通、Unicodeでは1文字に぀き2バむトのデヌタを䜿いたす。この2バむトには65536通り0x00000xFFFFのビットが衚珟できたす。Unicodeの本来のアむディアは、この玄6䞇字で䞖界䞭の文字を衚珟しようずいうものでした。

たた、日本語の堎合、党角でも半角でも1文字あたり2バむトのデヌタを䜿いたす䟋えば、"a"も"あ"も2バむト。そのため、「文字数 × 2  䜿甚バむト数」ずいう関係がい぀も成り立ち、䜿甚バむト数を2で割れば文字数を簡単に導き出せたした。これは文字列を1文字ず぀凊理する堎合など、䟿利な偎面がありたした。

しかし、最近ではUnicodeに組み蟌みたい文字の芁望が増え、2バむトでは足りなくなっおきたした。そのため、解決策ずしおサロゲヌトペアず呌ばれる手法が導入されたした。これは、「1文字2バむト」の基本は保ち぀぀、䞀郚の文字に぀いおは「1文字4バむト」ずなる方法です。
"
サロゲヌトペアずは文字コヌドの倉換に迫る - Qiita
qiita.com/shuncask/items/a408d

前にも調べたこずがあるが 。

Qiitaサロゲヌトペアずは文字コヌドの倉換に迫る - Qiita1. はじめに文字コヌドが異なる環境間でのデヌタ転送時に、サロゲヌトペアず呌ばれる文字の倉換が必芁ずなる堎合があるこずを知りたした。そこで、サロゲヌトペアに぀いお調べた内容をたずめたす。2. サ 

「日本語の堎合、党角でも半角でも1文字あたり2バむトのデヌタを䜿いたす䟋えば、"a"も"あ"も2バむト」の郚分が分かりにくい。

「日本語の堎合」ずいう前提だから正しいのだろうけど、「」ず「a」は異なるはず。私の理解では、前者は党角で埌者は「半角」。で、Twitterで投皿する際には、前者は140文字。埌者は280文字たで。ちなみに、マストドンのここでは、前者も埌者も500文字。

葛󠄀城垂
↑
文字に芋えるがマストドンでも文字ずカりントされる。


"葛 の異䜓字ずしお 葛󠄀 があり、カツシカ区は前者を、カサむ垂は埌者を䜿うらしい。

ずころがこの二぀は 𠮟 ず 𠮟 のように別の文字コヌドを振るわけではなく、どちらも同じ文字であり、曞き方のバリ゚ヌションが違うずいう扱いになっおいる。

そこで、基本ずなる文字コヌドを定矩し、そこに察しおバリ゚ヌションがあるものはその番号を組み合わせるずいう考え方が 異䜓字セレクタ だ。

葛 の文字コヌドは 0x845B であり、異䜓字の 1 番目である 葛󠄀 には、埌ろに 0xE0101 を぀ける。
"
JavaScript における文字コヌドず「文字数」の数え方 | blog.jxck.io
blog.jxck.io/entries/2017-03-0

blog.jxck.ioJavaScript における文字コヌドず「文字数」の数え方 | blog.jxck.iotextarea などに入力された文字数を、JS で数えたい堎合がある。ここで .length を数えるだけではダメな理由は、文字コヌドや JS の内郚衚珟の話を理解する必芁がある。倚蚀語や絵文字察応なども螏たえた䞊で、どう凊理するべきなのか。それ自䜓は枯れた話題ではあるが...

で「葛󠄀城垂」の「葛󠄀」ず「城」の間にカヌ゜ルを眮いお、キヌボヌドのBackspaceを抌すず「葛城垂」になる。
マストドンのここのフォヌムでも、
「葛󠄀城垂」の「葛󠄀」の次の「城」が改行されおいるず、「城」の前でBackspaceを抌すず「葛城垂」になるみたい。