Unicodeãšæåã³ãŒãã®ä»çµã¿ â ãªãæååãã¯èµ·ããã®ã
ã¡ãŒã«ãšãWebããŒãžã§ãæååããã£ãŠããŸã«èŠããã©ãããã£ãŠãªãã§èµ·ããã®ïŒ
ãã質åã ããã³ã³ãã¥ãŒã¿ã¯æåããæ°åããšããŠæ±ã£ãŠãããã ãã©ãæã¯ãã®æ°åã®å²ãåœãŠæ¹ãåœãå°åããšã«ãã©ãã©ã ã£ããã ããè±èªåã§ã¯ASCIIã£ãŠããèŠæ Œã§ãA=65ãB=66ã¿ããã«128æåã ãå®çŸ©ãããŠãããæ¥æ¬èªã¯Shift_JISãäžåœèªã¯GB2312ã£ãŠããå¥ã ã®èŠæ Œã䜿ã£ãŠãããã ã
ããããå¥ã®ã«ãŒã«ã§æ°åãå²ãæ¯ã£ãŠãã£ãŠããšïŒ ãããæ··ãã£ãããããããªãããâŠ
ãã®ãšãããæ¥æ¬èªã®Shift_JISã§æžãããããŒã¿ããäžåœèªã®GB2312ãšããŠèªãããšãããšããŸã£ããéãæåã«èŠããŠããŸãããããæååãã®æ£äœã ããã§ããã®åé¡ã解決ããããã«çãŸããã®ãUnicodeãªãã ã
Unicodeã£ãŠã©ãããä»çµã¿ãªã®ïŒ
Unicodeã¯ãäžçäžã®æåã«äžã€ãã€çªå·ãæ¯ããããšãã壮倧ãªãããžã§ã¯ãã ããããšãã°A ã¯U+0041ããããã¯U+3042ã£ãŠããã³ãŒããã€ã³ããå²ãåœãŠãããŠãããçŸåš15äžæå以äžãç»é²ãããŠããŠãçµµæåãå€ä»£æåãŸã§å«ãŸããŠãããã ã
ã§ãçªå·ã決ããã ãã ãšãå®éã«ãã¡ã€ã«ã«ä¿åãããšãã¯ã©ãããã®ïŒ
ããã§ç»å Žããã®ãUTF-8ã£ãŠãããšã³ã³ãŒãã£ã³ã°ã ããUTF-8ã¯ã³ãŒããã€ã³ãã1ã4ãã€ãã®å¯å€é·ã§è¡šçŸããä»çµã¿ãªãã ãè±èªã®ã¢ã«ãã¡ãããã¯ASCIIãšåã1ãã€ããæ¥æ¬èªã®ã²ãããªã¯3ãã€ããçµµæåã¯4ãã€ãã£ãŠããå ·åã«ããASCIIãšäºææ§ããããããè±èªã®ããã¹ãã¯ãã®ãŸãŸèªããã®ã倧ããªåŒ·ã¿ã ãã
ã ããWebãµã€ãã®ã»ãšãã©ãUTF-8ã䜿ã£ãŠããã ãïŒ UTF-16ãšãUTF-32ã£ãŠããã®ãããã£ãŠèãããã©âŠ
UTF-16ã¯JavaScriptã®æååãWindowsã®å éšAPIã§äœ¿ãããŠããããåºæ¬çãªæåã¯2ãã€ãã§è¡šçŸãããã ãã©ãU+FFFFãè¶ ããæåââããšãã°äžéšã®æŒ¢åãçµµæåââã¯ããµãã²ãŒããã¢ãã£ãŠãã2ã€ã®16ãããå€ã®çµã¿åããã§è¡šçŸããå¿ èŠããããã ãUTF-32ã¯ãã¹ãŠ4ãã€ãåºå®ã ããã·ã³ãã«ã ãã©ãã¡ã¢ãªå¹çãæªããŠããŸã䜿ãããªããã
ãµãã²ãŒããã¢ã£ãŠäœã ãé£ãããâŠå ·äœçã«ã¯ã©ãããããšïŒ
UTF-16ã§ã¯0xD800ã0xDBFFããäžäœãµãã²ãŒããã0xDC00ã0xDFFFããäžäœãµãã²ãŒãããšããŠäºçŽãããŠããŠããã®2ã€ããã¢ã«ããŠ1ã€ã®æåã衚ããã ãããšãã°çµµæåã®ãðãã¯U+1F600ã ãã©ãUTF-16ã§ã¯0xD83D+0xDE00ãšãã2ã€ã®å€ã®ãã¢ã«ãªããJavaScriptã§'ð'.lengthã2ã«ãªãã®ã¯ãã®ããã ãã
ãããïŒ ããšãã°èã®è²ãå€ããã¹ãã³ããŒã³ã¢ãã£ãã¡ã€ã¢ããZWJïŒãŒãå¹ æ¥ååïŒã·ãŒã±ã³ã¹ã£ãŠããä»çµã¿ããããã ãå®¶æã®çµµæåãðšâð©âð§âðŠãã¯ãå®ã¯ðš+ZWJ+ð©+ZWJ+ð§+ZWJ+ðŠã£ãŠãã7ã€ã®ã³ãŒããã€ã³ããçµåããŠ1ã€ã®çµµæåãšããŠè¡šç€ºããŠãããã ããã ããèŠãç®ã¯1æåãªã®ã«å éšçã«ã¯ããªãé·ããã ã
ãããâŠïŒ ä»ã«ãUnicodeã§æå€ãšåä»ãªåé¡ã£ãŠããã®ïŒ
ãæ£èŠåãã£ãŠããåé¡ãããããããšãã°ãcafeÌãïŒeã®åŸã«çµåã¢ã¯ã»ã³ãèšå·ïŒãšãcaféãïŒæåããåææžã¿ã®Ã©ïŒã¯ãèŠãç®ã¯åããcaféãã ãã©ãã€ãåãéããã ãNFCãšããæ£èŠå圢åŒã§åææžã¿ã«çµ±äžããããNFDã§å解圢ã«çµ±äžããªããšãæååã®æ¯èŒããã¡ã€ã«åã®äžèŽå€å®ã§åé¡ãèµ·ããããmacOSã®ãã¡ã€ã«ã·ã¹ãã ã¯NFDã䜿ããããWindowsã§äœã£ããã¡ã€ã«åãšäžèŽããªãããšããããã ã
ããã°ã©ããŒãæ°ãã€ããã¹ããã€ã³ãã£ãŠä»ã«ãããïŒ
ããã©ã³ã§ãåŒã£ãããæåãªåé¡ãããããããã«ã³èªã®Iåé¡ãã£ãŠãã£ãŠãè±èªã§ã¯iã®å€§æåã¯Iã ãã©ããã«ã³èªã§ã¯iã®å€§æåã¯Ä°ïŒäžã«ãããä»ãïŒãIã®å°æåã¯Ä±ïŒããããªãïŒãªãã ãã ããtoUpperCase()ããã±ãŒã«èæ ®ããã«äœ¿ããšããã«ã³èªç°å¢ã§ãã°ãåºããããäžã€æãã®ããã¢ã°ã©ãæ»æãããªã«æåã®Ð°ïŒU+0430ïŒãšã©ãã³æåã®aïŒU+0061ïŒã¯èŠãç®ãã»ãŒåãã ãããåœã®URLãäœã£ãŠãã£ãã·ã³ã°ã«äœ¿ãããããšããããã ã
èŠãç®ãåããªã®ã«äžèº«ãéãæåããããªããŠæãâŠïŒ Unicodeã£ãŠå¥¥ãæ·±ããã ãã
ããã ããUnicodeã®ãããã§äžçäžã®æåãçµ±äžçã«æ±ããããã«ãªã£ããã©ããã®åã ãè€éããå¢ããŠãããã ãããã°ã©ãã³ã°ã§ã¯ãæååã®é·ãïŒèŠãç®ã®æåæ°ãšã¯éããªããã倧æå倿ã¯ãã±ãŒã«ã«äŸåããããåãã«èŠããæåãå¥ã®ã³ãŒããã€ã³ããããããªããã£ãŠãã3ã€ãæèããŠãããšãæåãŸããã®ãã°ãããªãé²ãããã