è€æ°ã®èšèªã䜿çšããåœéçãªã¢ããªã±ãŒã·ã§ã³ãäœæããŠããå Žåã¯ããšã³ã³ãŒãã£ã³ã°ã«ã€ããŠ1ã€ã2ã€ç¥ã£ãŠããå¿ èŠããããŸãã圌女ã¯ãããã¹ããç»é¢ã«ã©ã®ããã«è¡šç€ºãããããæ åœããŠããŸãããšã³ã³ãŒãã£ã³ã°ã®æŽå²ãšãã®æšæºåã«ã€ããŠç°¡åã«èª¬æããåŸããã®äœ¿çšæ³ã«ã€ããŠèª¬æããŸããæ å ±åŠã®çè«ã«å°ã觊ããŠã¿ãŸãããã
ãšã³ã³ãŒãã£ã³ã°å ¥é
ã³ã³ãã¥ãŒã¿ãŒã¯2é²æ°ïŒ0ãš1ïŒã®ã¿ãç解ããŸããããã圌ãã®èšèªã§ããä»ã«ã¯äœããããŸããã1ã€ã®æ°å€ã¯ãã€ããšåŒã°ããåãã€ãã¯8ãããã§æ§æãããŸããã€ãŸãã8ã€ã®0ãš1ã1ãã€ããæ§æããŸããã³ã³ãã¥ãŒã¿ãŒã®å éšã§ã¯ãããã°ã©ãã³ã°èšèªãããŠã¹ã®åããããŒã¹ãããŒã¯ãç»é¢äžã®ãã¹ãŠã®åèªãªã©ããã¹ãŠããã€ããªã«èŠçŽãããŸããããããããªããèªãã§ããèšäºã0ãš1ã®æã§ãã£ãå Žåã2é²æ°ã¯ã©ã®ããã«ããŠããã¹ãã«ãªããŸãããïŒãããç解ããŸãããã
ãšã³ã³ãŒãã£ã³ã°ã®ç°¡åãªæŽå²
ãã®éçºã®é»ææã«ã¯ãã€ã³ã¿ãŒãããã¯ãã£ã±ãè±èªã話ããŠããŸããããã®äœæè ãšãŠãŒã¶ãŒã¯ä»ã®èšèªã®æåã«ã€ããŠå¿é ããå¿ èŠã¯ãªãããã¹ãŠã®ããŒãºã¯æ å ±äº€æã®ããã®ã¢ã¡ãªã«æšæºã³ãŒãïŒASCIIïŒãšã³ã³ãŒãã£ã³ã°ã«ãã£ãŠå®å šã«ã«ããŒãããŠããŸããã
ASCIIã¯ããã€ããªèšå·ãè±åã«ãããã³ã°ããããã®ããŒãã«ã§ããã³ã³ãã¥ãŒã¿ã次ã®ãããªãšã³ããªãåä¿¡ãããšãïŒ
01001000 01100101 01101100 01101100 01101111 00100000 01110111 01101111 01110010 01101100 01100100
次ã«ãASCIIã䜿çšããŠããHelloworldããšãããã¬ãŒãºã«å€æããŸãã
1ãã€ãïŒ8ãããïŒã¯ãè±èªã®æåãšå¶åŸ¡æåãå«ããã®ã«ååãªå€§ããã§ããããã®äžéšã¯ãã¬ããªã³ã¿ãŒã§äœ¿çšãããŠãããããåœæã¯æçšã§ããïŒçŸåšã¯ããŸãæçšã§ã¯ãããŸããïŒãããšãã°ãå¶åŸ¡æåã¯7ïŒãã€ããªã§ã¯0111ïŒã§ãããããã«ããã³ã³ãã¥ãŒã¿ã¯ä¿¡å·ãçºããŸããã 8ïŒãã€ããªã§1000ïŒ-æåŸã«å°å·ãããæåã衚瀺ããŸãããŸãã¯12ïŒãã€ããªã§1100ïŒ-ãããªç«¯æ«ã«æžã蟌ãŸãããã¹ãŠã®ããã¹ããæ¶å»ããŸããã
åœæãã³ã³ãã¥ãŒã¿ãŒã¯1ãã€ãããã8ããããæ°ããŠããŸããïŒåžžã«ããã§ãããšã¯éããŸããã§ããïŒã®ã§ãåé¡ã¯ãããŸããã§ããããã¹ãŠã®å¶åŸ¡æåããã¹ãŠã®æ°åãããã³è±åãæ ŒçŽã§ãã1ãã€ãã§255æåããšã³ã³ãŒãã§ããASCIIã§å¿ èŠãªã®ã¯127ã ããªã®ã§ããŸã äœè£ããããŸãããã€ãŸãããšã³ã³ãŒãã«ã¯æªäœ¿çšã®128ã®äœçœ®ãæ®ã£ãŠããŸããã
ããã¯ASCIIããŒãã«ãã©ã®ããã«èŠãããã§ãã2é²æ°ã¯ãAããZãŸã§ã®ãã¹ãŠã®å€§æåãšå°æåãããã³0ãã9ãŸã§ã®æ°åããšã³ã³ãŒãããŸããæåã®32æ¡ã¯ãå°å·ã§ããªãå¶åŸ¡æåçšã«äºçŽãããŠããŸãã
ASCIIã®åé¡
128ãã255ã®äœçœ®ã¯ç©ºã§ãããåœæ°ã¯ããããã©ã®ããã«åãããçåã«æããŸããã ãããããããã¯ãã¹ãŠç°ãªãã¢ã€ãã¢ãæã£ãŠããŸãããç±³åœèŠæ ŒåäŒïŒANSIïŒã¯ãããŸããŸãªæ¥çã®èŠæ Œãçå®ããŠããŸãã圌ãã¯0ãã127ãŸã§ã®ASCIIäœçœ®ãæ¿èªããŸããã誰ããããã«ç°è°ãå±ããŸããã§ãããåé¡ã¯æ®ãã®ããžã·ã§ã³ã«ãããŸããã
ããã¯ãæåã®IBMã³ã³ãã¥ãŒã¿ãŒã®128ã255ã®äœçœ®ãåãããã®ã§ãã
ããã€ãã®æ³¢ç·ãèæ¯ã¢ã€ã³ã³ãæ°åŠæŒç®åãããã³Ã©ã®ãããªã¢ã¯ã»ã³ãèšå·ä»ãã®èšå·ãããããä»ã®ã³ã³ãã¥ãŒã¿ã¢ãŒããã¯ãã£ã®éçºè ã¯ãã®ã€ãã·ã¢ããããµããŒãããŠããŸããã§ããã誰ããASCIIã®åŸåã§ç¬èªã®ãšã³ã³ãŒãã£ã³ã°ãå®è£ ããããšèããŠããŸããã
ãããã®ç°ãªããšã³ãã£ã³ã°ã¯ãã¹ãŠã³ãŒãããŒãžãšåŒã°ããŠã ãŸãã
ASCIIã³ãŒãããŒãžãšã¯äœã§ããïŒ
ããã465以äžã®ç°ãªãã³ãŒãããŒãžã®ã³ã¬ã¯ã·ã§ã³ã§ãïŒã®ãªã·ã£èªãšäžåœèªãªã©ãåãèšèªå ã§ãç°ãªãããŒãžããããŸããããã®æ··ä¹±ãã©ã®ããã«æšæºåã§ããŸããïŒãŸãã¯ãå°ãªããšãç°ãªãèšèªéã§æ©èœãããã®ã§ããïŒãŸãã¯ãåãèšèªã®ç°ãªãã³ãŒãããŒãžéã§ããïŒè±èªä»¥å€ã®èšèªã§ã¯ïŒäžåœèªã¯10äžæå以äžãããŸãã ASCIIã¯ã挢åã«ãã¹ãŠã®ç©ºã®äœçœ®ãäžããããšã«ãããšããŠããããããã¹ãŠã«å¯Ÿå¿ããããšããã§ããŸããã
ãã®åé¡ã¯ãããåŒã°ããŠãã æååãïŒBNOPãkrakozyabryïŒãããã¯ã誀ã£ããšã³ã³ãŒãã£ã³ã°ã䜿çšãããšãã«åŸãããæªãã ããã¹ãã«ã€ããŠåœŒããèšã£ãŠããããšã§ããæ¥æ¬èªãã翻蚳ãããæååãã¯ãæåå€æããæå³ããŸãã
bnopniïŒkrakozyabrovïŒã®äŸã
ããçš®ã®çæ°...
äžåºŠïŒããŒã¿ã確å®ã«å€æããæ©äŒã¯ãããŸããã§ãããã€ã³ã¿ãŒãããã¯ãäžçäžã®ã³ã³ãã¥ãŒã¿ãŒã®å·šå€§ãªæ¥ç¶ã«ãããŸããããã¹ãŠã®åœãç¬èªã®åºæºã䜿çšããããšã決å®ãããšæ³åããŠãã ãããããšãã°ãã®ãªã·ã£èªã®ã³ã³ãã¥ãŒã¿ãŒã¯ã®ãªã·ã£èªã®ã¿ãåãå ¥ããŸãããè±èªã®ã³ã³ãã¥ãŒã¿ãŒã¯è±èªã®ã¿ãéä¿¡ããŸããããã¯ç©ºã®æŽçªã§å«ãã§ãããããªãã®ã§ã誰ãããªãã®å£°ãèãããšãã§ããŸããã
ASCIIã¯ãã¯ã人çã«ååã§ã¯ãããŸããã§ãããäžçäžã®ã€ã³ã¿ãŒãããã§ã¯ãäœãå¥ã®ãã®ãäœæããå¿ èŠããããŸãããããããªããšãäœçŸãã®ã³ãŒãããŒãžãåŠçããå¿ èŠããããŸããã ãããã®æ®µèœãèªã¿ãããªãå Žåãé€ããŸãã
ÖÖ0590 Ö ××××× ×××
ãããUnicodeã®èªçã§ã
Unicodeã¯UniversalCoded Character SetïŒUCSïŒã®ç¥ã§ ãå ¬åŒã®ISO / IEC 10646æå®ããããŸãããã ããéåžžã誰ããUnicodeåã䜿çšããŸãã
ãã®æšæºã¯ããšã³ã³ãŒãã£ã³ã°ãšã³ãŒãããŒãžã«ãã£ãŠåŒãèµ·ããããåé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãããããã«ã¯ãäžçäžã®èšèªãæåã®ãã£ã©ã¯ã¿ãŒã«å²ãåœãŠãããå€ãã®ã³ãŒããã€ã³ãïŒã³ãŒããã€ã³ãïŒãå«ãŸããŠã ãŸããã€ãŸããUnicode㯠æåã®ã»ããã§ããããã¯ãåç §ãããæåã«æœè±¡åãé¢é£ä»ããããã«äœ¿çšã§ããŸãããããŠãããã¯ããšãžããã®è±¡åœ¢æåã§ããããã¹ãŠã®ã·ã³ãã«ã«å¯ŸããŠè¡ãã ãŸãã
誰ãããã¹ãŠã®èšèªã®ãã¹ãŠã®æåãäžæã®ã³ãŒããšç §åããçŽ æŽãããä»äºãããŸãããããã¯ãããã©ã®ããã«èŠãããã§ãïŒ
«Hello World» U+0048 : H U+0065 : E U+006C : L U+006C : L U+006F : O U+0020 : U+0057 : W U+006F : O U+0072 : R U+006C : L U+0064 : D
U +ãã¬ãã£ãã¯ã¹ã¯ããããUnicodeæšæºã§ãããæ°å€ã2é²å€æã§ããããšã瀺ããŸãããã®æšæºã§ã¯ã2é²æ°ã®ç°¡ç¥åãããè¡šçŸã§ãã16é²è¡šèšã䜿çšãããŠããŸãã ããã§ã¯ããã£ãŒã«ãã«äœã§ãå ¥åããŠãUnicodeã«å€æãããæ¹æ³ã確èªã§ããŸãããããŠã ããã§ã¯ã143,859åã®ã³ãŒããã€ã³ããã¹ãŠãè³è³ããããšãã§ããŸãã
念ã®ããã«æ確ã«ããŠãããŸããããããçš®é¡ã®ã·ã³ãã«ã«å²ãåœãŠãããã³ãŒããã€ã³ãã®å€§èŠæš¡ãªèŸæžã«ã€ããŠè©±ããŠããŸããããã¯éåžžã«å€§ããªèšå·ã®ã»ããã§ããããã以äžã®ãã®ã§ã¯ãããŸããã
æåŸã®ææãè¿œå ããããšã¯æ®ã£ãŠããŸãã
Unicode Transform Protocol (UTF)
UTFã¯ãUnicodeã§ã³ãŒããã€ã³ãããšã³ã³ãŒãããããã®ãããã³ã«ã§ããããã¯æšæºã§è©³ãã説æãããŠãããä»»æã®ã³ãŒããã€ã³ãããšã³ã³ãŒãã§ããŸãããã ããUTFã«ã¯ããŸããŸãªçš®é¡ããããŸãããããã¯ã1ã€ã®ã¢ã€ãã ããšã³ã³ãŒãããããã«äœ¿çšããããã€ãæ°ãç°ãªããŸãã UTF-8ã¯ãã€ã³ãããšã«1ãã€ãã䜿çšããUTF-16ã¯2ãã€ãã䜿çšããUTF-32ã¯4ãã€ãã䜿çšããŸãã
ãããã3ã€ã®ç°ãªããšã³ã³ãŒãã£ã³ã°ãããå Žåãç¹å®ã®ãã¡ã€ã«ã§ã©ãã䜿çšãããŠããããã©ã®ããã«ããŠç¥ãããšãã§ããŸããïŒãã®ããã« ããã€ãé ããŒã¯ïŒBOMïŒã䜿çšãããŸããããã¯ããšã³ã³ãŒãã£ã³ã°çœ²åãšãåŒã°ããŸãã BOMã¯ããã¡ã€ã«ã®å é ã«ãã2ãã€ãã®ããŒã«ãŒã§ãããããã§äœ¿çšãããŠãããšã³ã³ãŒãã£ã³ã°ã瀺ããŸãã
ã€ã³ã¿ãŒãããã§ã¯ãUTF-8ãæãäžè¬çã«äœ¿çšãããŠããŸã ãHTML5æšæºã§ãåªå çã«èšè¿°ãããŠããã®ã§ãæã泚æãæããŸãã
ãã® ã°ã©ã㯠2012幎ã«äœæãããUTF-8ãäž»èŠãªãšã³ã³ãŒãã£ã³ã°ã«ãªãã€ã€ãããŸããããããŠãããã¯ãŸã ã§ãã
ã°ã©ã 㯠UTF-8ã®æ®åçã瀺ããŠããŸãã
UTF-8ãšã¯äœã§ããïŒã©ã®ããã«æ©èœããŸããïŒ
UTF-8ã¯ãåUnicodeã³ãŒããã€ã³ã0ã127ã1ãã€ãã§ãšã³ã³ãŒãããŸãïŒASCIIã®å Žåãšåæ§ïŒãã€ãŸããASCIIã䜿çšããŠããã°ã©ã ãäœæãããŠãŒã¶ãŒãUTF-8ã䜿çšããŠããå ŽåããŠãŒã¶ãŒã¯ç°åžžãªããšã«æ°ä»ãããšã¯ãããŸããããã¹ãŠãæå³ãããšããã«æ©èœããŸãããããããã«éèŠã§ãããã«æ³šæããŠãã ããã UTF-8ã®å€§éæ¡çšã®éãASCIIãšã®äžäœäºææ§ãç¶æããå¿ èŠããããŸããããããŠããã®ãšã³ã³ãŒãã£ã³ã°ã¯äœãå£ããŸããã
ååã瀺ãããã«ãã³ãŒããã€ã³ãã¯8ãããïŒ1ãã€ãïŒã§æ§æãããŸãã Unicodeã«ã¯ãæ°ãã€ãïŒæ倧6ïŒãå ããæåããããŸããããã¯å¯å€é·ãšåŒã°ããŸããèšèªãç°ãªãã°ãç¹å®ã®ãã€ãæ°ãç°ãªããŸããè±èª-1ã ãšãŒãããèšèªïŒã©ãã³ã¢ã«ãã¡ãããïŒãããã©ã€èªãã¢ã©ãã¢èªã³ãŒããã€ã³ãããšã«2ãã€ãã§è¡šãããŸãã以äžã®ããã« äžåœèªãæ¥æ¬èªãéåœèªãããã³ä»ã®ã¢ãžã¢ã®èšèªã3ã€ã®ãã€ãã䜿çšãããŠããŸãã
æåãè€æ°ã®ãã€ããå ããå¿ èŠãããå Žåã¯ãããããã¿ãŒã³ã䜿çšããŠé·ç§»ã瀺ããŸããããã¯ãæåã次ã®æ°ãã€ãã«ç¶ãããšãæå³ããŸãã
ãããŠä»ãç§ãã¡ã¯ãŸãã§éæ³ã®ããã«ãã·ã¥ã¡ãŒã«ã®æ¥åœ¢æåïŒHabrã¯ããã衚瀺ããŸããïŒãšçµµæåã¢ã€ã³ã³ããšã³ã³ãŒãããæ¹æ³ã«ã€ããŠåæã«éããŸãã ïŒ
èŠçŽãããšãæåã«BOMãèªã¿åã£ãŠãšã³ã³ãŒãããŒãžã§ã³ã決å®ãã次ã«ãã¡ã€ã«ãUnicodeã³ãŒããã€ã³ãã«å€æããŠãããUnicodeã»ããã®æåã衚瀺ããŸãã
æåŸã«UTFã«ã€ããŠ
ã³ãŒã㯠ããŒã§ããééã£ããšã³ã³ãŒãã£ã³ã°ãæçš¿ãããšãäœãèªããªããªããŸããããŒã¿ãéåä¿¡ãããšãã¯ããã®ããšã«æ³šæããŠãã ãããç§ãã¡ã®æ¥åžžã®ããŒã«ã§ã¯ãããã¯ãã°ãã°æœè±¡åãããŸãããç§ãã¡ããã°ã©ããŒã«ãšã£ãŠã¯ãå éšã§äœãèµ·ãã£ãŠããã®ããç解ããããšãéèŠã§ãã
ãšã³ã³ãŒãã£ã³ã°ãã©ã®ããã«èšå®ããŸããïŒ HTMLã¯è±èªã§èšè¿°ãããŠãããã»ãšãã©ãã¹ãŠã®ãšã³ã³ãŒãã£ã³ã°ã¯è±èªã§æ£åžžã«æ©èœãããããã»ã¯ã·ã§ã³ã®æåã§ãšã³ã³ãŒãã£ã³ã°ãæå®ã§ããŸã
<had>
ã
<html lang="en">
<head>
<meta charset="utf-8">
</head>
ééã£ããšã³ã³ãŒãã£ã³ã°ãçŸåšäœ¿çšãããŠããå ŽåãHTML
<had>
解æãæåããããçŽããã å¯èœæ§ãããããããããæåã«è¡ãããšãéèŠ ã§ããHTTPãªã¯ãšã¹ã/ã¬ã¹ãã³ã¹ã®Content-TypeããããŒãããšã³ã³ãŒãããŒãžã§ã³ã確èªããããšãã§ããŸã ã
HTMLããã¥ã¡ã³ãã«ãšã³ã³ãŒãã£ã³ã°ã«ã€ããŠã®èšåãå«ãŸããŠããªãå Žåã HTML5ä»æ§ã¯BOMã¹ãããã£ã³ã°ã®ãããªèå³æ·±ããœãªã¥ãŒã·ã§ã³ãæäŸããŸã ããã®å©ããåããŠããã€ãé ããŒã«ãŒïŒBOMïŒã«ãã£ãŠäœ¿çšããããšã³ã³ãŒãã£ã³ã°ã決å®ã§ããŸãã
ããã ãã§ããïŒ
Unicodeã¯ãŸã å®æããŠããŸãããä»ã®æšæºã®å Žåãšåæ§ã«ãç§ãã¡ã¯äœããè¿œå ããäœããåé€ããäœãæ°ãããã®ãæäŸããŸããã©ã®ä»æ§ããå®å šãã§ã¯ãããŸãããéåžžã1幎ã«1ã2åã®ãªãªãŒã¹ããããŸããããã®èª¬æ㯠ããã«ãããŸãã
æè¿ãTwitterã§ãã·ã¢èªã®Unicodeæåãæ£ãã衚瀺ãããªãããšã«é¢é£ããéåžžã«èå³æ·±ããã°ã«ã€ããŠèªã¿ ãŸããã
ããªããæåŸãŸã§èªãã ãªããããªãã¯çŽ æŽãããã§ãã宿é¡ãããããšããå§ãããŸããééã£ããšã³ã³ãŒãã£ã³ã°ã䜿çšãããšããµã€ããã©ã®ããã«ç Žæãããã確èªããŠãã ãããç§ã¯ãããå©çšã ãŸããGoogle Chromeã®æ¡åŒµæ©èœã§ããšã³ã³ãŒãã£ã³ã°ãå€æŽããå¥ã®ããŒãžãéãããšããŸãããæ å ±ã¯å®å šã«èªããŸããã§ãããåãæ ªãã©ã®ããã«èŠããããèªåã§è©ŠããŠã¿ãŠãã ãããããã¯ããšã³ã³ãŒãã£ã³ã°ã®éèŠæ§ãç解ããã®ã«åœ¹ç«ã¡ãŸãã
çµè«
ãã®èšäºãæžããŠãããšãã«ããã€ã±ã«ã»ãšããŒãœã³ã«ã€ããŠç¥ããŸãã ã1993幎以æ¥ã圌ã¯Unicodeã«200以äžã®å€æŽãææ¡ããæšæºã«æ°åã®æåãè¿œå ããŠããŸãã2003幎ã®æç¹ã§ã圌ã¯æãçç£çãªã¡ã³ããŒãšèŠãªãããŠããŸããã圌ã ããUnicodeã®é¡ã«å€§ããªåœ±é¿ãäžããŸããããã€ã±ã«ã¯ãä»æ¥ç§ãã¡ãç¥ã£ãŠããããã«ã€ã³ã¿ãŒããããäœã£ã人ã®1人ã§ããéåžžã«å°è±¡çã
ãšã³ã³ãŒãã£ã³ã°ã®ç®çããããã解決ããåé¡ãããã³ãããã倱æãããšãã«äœãèµ·ãããããèŠãã§ãããšæããŸãã