äžã®ïŒã€ã®çµµæåã§ãã¹ããã³ã§ã®æåæ°ã¯ãïŒããªãã ãã©ãç§ããã€ãã¿ãŒçšã«äœã£ãæåæ°ã«ãŠã³ãJavascriptã ãšãïŒãã«ãªã£ãŠããåè§ãšå
šè§ã®éããšããããã§ã¯ãªããåè§ã«ãŠã³ãã§ã¯ã16ãã«ãªã£ãŠãã
æåã³ãŒãã®ç¯å²ã®ã©ã®éšåãåè§ã§æ°ããŠãã©ã®éšåãå
šè§ã§æ°ãããã®ç¯å²ããå€ããŠããæåã ãããªãã ãšæãããç§ä»¥å€ã¯äœ¿ããªãã®ã§èªåã§æ°ãã€ããŠããã°è¯ãã ããªã®ã§æŸçœ®ããªâŠãã§ããæ°ã«ãªãã
#ChatGPT ã«é¢é£ããŠããéšåã®ã³ãŒãã瀺ããŠã«ãŠã³ãããããšãããïŒããšãªã£ãã
ããã§ãïŒãã«ãªã£ãŠããŸãåå ãå°ãããšããã
"
çµµæå㯠1æå ãšããŠã«ãŠã³ããããŸãããå®éã«ã¯çµµæåã¯ è€æ°ã®Unicodeã³ãŒããŠããã ã§è¡šãããããšãå€ããããstr.length ãš str ã®å
éšè¡šçŸã«ã¯å·®ç°ãçããŸãã
"
"str.length ã¯æååå ã®ãã³ãŒããŠãããæ°ããè¿ããŸããããã¯ãJavaScriptãæååãUTF-16ãšã³ã³ãŒãã£ã³ã°ã§å éšçã«æ±ãããã§ãã
ïŒéµäŸ¿ç©ïŒã¯ãUnicodeã§ U+1F4E9 ãšããã³ãŒããã€ã³ãã§è¡šãããŸãããã®çµµæå㯠1ã€ã®ã³ãŒããã€ã³ã ã§ãããUTF-16ãšã³ã³ãŒãã£ã³ã°ã§ã¯ 2ã€ã®ã³ãŒããŠãããïŒãµãã²ãŒããã¢ïŒã§è¡šãããŸãã
ïŒã飯ïŒã
ïŒãæ€ïŒãåæ§ã«ãåçµµæå㯠2ã€ã®ã³ãŒããŠããã ã§è¡šãããŸãã
ãã®ãããstr = "" ã®å Žåãåçµµæåã 2 ã€ã®ã³ãŒããŠããããšããŠã«ãŠã³ããããŸãããstr.length ã¯ãæåæ°ã§ã¯ãªã ã³ãŒããŠãããæ° ãªã®ã§âŠ
"
#ChatGPT ã«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ãã€ãããšãªãæ¹æ³ã§ãã
"
ãµãã²ãŒããã¢ãšã¯ïŒæåã³ãŒãã®å€æã«è¿«ã #Unicode - Qiita
https://qiita.com/shuncask/items/a408db5266f3b2922726
åã«ã調ã¹ãããšããããâŠã
ãæ¥æ¬èªã®å Žåãå šè§ã§ãåè§ã§ã1æåããã2ãã€ãã®ããŒã¿ã䜿ããŸãïŒäŸãã°ã"a"ã"ã"ã2ãã€ãïŒãã®éšåãåããã«ããã
ãæ¥æ¬èªã®å Žåããšããåæã ããæ£ããã®ã ãããã©ããïœããšãaãã¯ç°ãªãã¯ããç§ã®çè§£ã§ã¯ãåè ã¯å šè§ã§åŸè ã¯ãåè§ããã§ãTwitterã§æçš¿ããéã«ã¯ãåè ã¯140æåãåŸè ã¯280æåãŸã§ãã¡ãªã¿ã«ããã¹ããã³ã®ããã§ã¯ãåè ãåŸè ã500æåã
#ã¡ã¢
"length ã¯æåæ°ã§ã¯ãªããåã«ãã® UTF-16 é
åã®é·ãã ã
ã ããã 1 æåã« 16bit ã 2 ã€å¿
èŠãªãµãã²ãŒããã¢ã¯ length ã 2 ãšãªã£ãŠããŸãã
"
JavaScript ã«ãããæåã³ãŒããšãæåæ°ãã®æ°ãæ¹ | blog.jxck.io
https://blog.jxck.io/entries/2017-03-02/unicode-in-javascript.html
èó ååž
â
ïŒæåã«èŠããããã¹ããã³ã§ãïŒæåãšã«ãŠã³ããããã
#ã¡ã¢
"è ã®ç°äœåãšã㊠èó ããããã«ãã·ã«åºã¯åè
ããã«ãµã€åžã¯åŸè
ã䜿ããããã
ãšããããã®äºã€ã¯ ð ® ãš ð ® ã®ããã«å¥ã®æåã³ãŒããæ¯ãããã§ã¯ãªããã©ã¡ããåãæåã§ãããæžãæ¹ã®ããªãšãŒã·ã§ã³ãéããšããæ±ãã«ãªã£ãŠããã
ããã§ãåºæ¬ãšãªãæåã³ãŒããå®çŸ©ããããã«å¯ŸããŠããªãšãŒã·ã§ã³ããããã®ã¯ãã®çªå·ãçµã¿åããããšããèãæ¹ã ç°äœåã»ã¬ã¯ã¿ ã ã
è ã®æåã³ãŒã㯠0x845B ã§ãããç°äœåã® 1 çªç®ã§ãã èó ã«ã¯ãåŸãã« 0xE0101 ãã€ããã
"
JavaScript ã«ãããæåã³ãŒããšãæåæ°ãã®æ°ãæ¹ | blog.jxck.io
https://blog.jxck.io/entries/2017-03-02/unicode-in-javascript.html
#X ã§ãèó ååžãã®ãèó ããšãåãã®éã«ã«ãŒãœã«ã眮ããŠãããŒããŒãã®BackspaceãæŒããšãèååžãã«ãªãã
ãã¹ããã³ã®ããã®ãã©ãŒã ã§ãã
ãèó ååžãã®ãèó ãã®æ¬¡ã®ãåããæ¹è¡ãããŠãããšããåãã®åã§BackspaceãæŒããšãèååžãã«ãªãã¿ããã