ãã£ãšãã£ãïŒ é·ãéãCP1251ã®æ¥ãã¹ãéºç£ã¯éçºè ãæ©ãŸããŠããŸããã ãŠãã³ãŒãã®æ代ã¯å€ããããããä»ã§ãã·ã³ã°ã«ãã€ããšã³ã³ãŒãã£ã³ã°ã䜿çšããå€éšã·ã¹ãã ãšã®äºææ§ã®ããã«æŸèæãããŸããŸãªå Žæã«é 眮ããŠããŸãã ãããããã®çç±ã¯éåžžã«åççã§ãããMyWorldãéçºããã倧èŠæš¡ãªãããžã§ã¯ããUnicodeã«ç§»è¡ããã®ã¯éåžžã«é¢åã§ãã ç§ãã¡ã¯ãããå幎éèŠç©ãã£ãŠããããã·ã¢èªåã®èŽè¡ã«å®è³ªçãªå©çããããããªãæ©èœã«ããã»ã©å€ãã®ãªãœãŒã¹ãè²»ããæºåãã§ããŠããŸããã§ããã
ããããæŽå²ã¯ãã®èª¿æŽãè¡ãããã°ãã°éåžžã«äºæ³å€ã§ãã ãã®åœã§æã人æ°ã®ãããœãŒã·ã£ã«ãããã¯ãŒã¯ã§ãããããžã§ã¯ãMy Worldãã«ã¶ãã¹ã¿ã³ã§éåžžã«äººæ°ãããããšã¯åšç¥ã®äºå®ã§ãã ãããŠãç§ãã¡ã¯åžžã«ãã«ã¶ãèªãŠãŒã¶ãŒã«ãæ¡åŒµããªã«æåã»ããã®ã«ã¶ãèªã¢ã«ãã¡ãããã®æåã䜿çšããæ©äŒãäžããããšèããŠããŸãããæ®å¿µãªãããCP1251ã§å ŽæãèŠã€ããããšãã§ããŸããã§ããã ãããŠãé·æçãªéçºãæçµçã«æ£åœåããããšãã§ãããç§ãã¡ã«ãšã£ãŠã®è¿œå ã®ã€ã³ã»ã³ãã£ãã¯ãåœå€ã§ã®ãããžã§ã¯ãã®äººæ°ã®ãããªãæé·ã§ããã ç§ãã¡ã¯ãå€åœäººãŠãŒã¶ãŒã«åããŠäžæ©ãèžã¿åºãæã ãšå®æããŸããã
ãã¡ããããããžã§ã¯ãã®åœéåã«å¿ èŠãªæåã®ããšã¯ãããŒã¿ã®åä¿¡ãéä¿¡ãåŠçãããã³UTF-8ã§ã®ä¿åãéå§ããããšã§ããã 倧èŠæš¡ãããžã§ã¯ãã§ã®ãã®æé ã¯ã話ãããšããããã€ãã®ããªãèå³æ·±ãåé¡ã解決ããªããã°ãªããªãã£ãæ¹æ³ã«æ²¿ã£ãŠãåçŽã§é·ãã¯ãããŸããã
ããŒã¿ããŒã¹å€æ
æåã«åºäŒã£ãéžæè¢ã¯ãããªãæšæºçãªãã®ã§ãã-ããŒãžã®è¡šç€ºããããŸãã¯ããŒã¿ã¹ãã¬ãŒãžããã ããã¯æãæéã®ãããããã»ã¹ã§ãããéçºè ãšç®¡çè ã«ãã調æŽãããã¢ã¯ã·ã§ã³ãå¿ èŠãšããããããªããžããªããå§ããããšã«ããŸãããç§ãã¡ã®ãœãŒã·ã£ã«ãããã¯ãŒã¯ã§ã¯ãé床ã®çç±ãããå€æ°ã®ããŸããŸãªå°çšãªããžããªã䜿çšãããŠãããããç¶æ³ã¯è€éã§ããã ãã¡ããããããã®ãã¹ãŠã«åœéåã®å¯Ÿè±¡ãšãªãããã¹ããã£ãŒã«ããå«ãŸããŠããããã§ã¯ãããŸããããããã§ãå€ãã®ããã¹ããã£ãŒã«ãããããŸããã ãããŠãæåã«è¡ããªããã°ãªããªãã£ãã®ã¯ããªããžããªå ã®ããã¹ãæååã®ã³ã³ãã³ãã«ã€ããŠããã¹ãŠã®ãªããžããªã®å®å šãªã€ã³ãã³ããªãå®æœããããšã§ããã 確ãã«ãç§ãã¡ã¯å€ãã®ããšãåŠã³ãŸããã
MySQL
MySQLã§ã¹ãã¬ãŒãžãUTF-8ã«å€æãå§ããŸããã ãã®çç±ã¯ãäžè¬ã«ããã®ããŒã¹ã®ãšã³ã³ãŒãã£ã³ã°ã®å€æŽããã€ãã£ãã«ãµããŒãããããšããäºå®ã§ããã ãããå®éã«ã¯ããã¹ãŠãããã»ã©åçŽã§ã¯ãããŸããã§ããããŸããå€æäžã¯ããŠã³ã¿ã€ã ãªãã§ããŒã¿ããŒã¹ãå€æããå¿ èŠããããŸããã
第äºã«ããã¹ãŠã®ããŒãã«ã§ã ããŒãã« `my_table`ãæåã»ããutf8ã«å€æããããã«å€æŽããããšãå€æããŸããã åççã§ã¯ãªããããã«äžå¯èœã§ãã ãã£ãŒã«ãã«ASCIIæåã®ã¿ãå«ãŸããŠããå Žåã§ããUTF-8ãã£ãŒã«ãã®ã€ã³ããã¯ã¹ã¯åžžã«3 * length_in_charactersãã€ããèŠãããããåççã§ã¯ãããŸããã ãããŠãã€ã³ããã¯ã¹ãã£ãŒã«ããç¹ã«16é²æååãå«ããã£ãŒã«ããªã©ããã®ãããªãã£ãŒã«ãããããããããŸããã MySQLã®ã€ã³ããã¯ã¹ããŒã®æ倧é·ã¯767ãã€ãã§ãããã€ã³ããã¯ã¹ïŒç¹ã«è€æ°åã®ã€ã³ããã¯ã¹ïŒãé©åããªããããäžå¯èœã§ãã ããã«ãå Žæã«ãã£ãŠã¯ãã€ããªããŒã¿ã誀ã£ãŠå Žæã«ä¿åããããããã®éã®å Žåããããåãã£ãŒã«ããæ éã«ãã§ãã¯ããå¿ èŠãããããšãããã£ãŠããŸãã
ããã§å©çšå¯èœãªããŒãã«ã«é¢ããããŒã¿ããŒã¹ããæ å ±ãåéããåŸããããã®å€§éšåãã»ãšãã©äœ¿çšãããŠããªãããšãæããã«ãªããŸããã çµæãšããŠãããŒã¿ããŒã¹å ã®ãã¹ãŠã®ããŒãã«ã®çŽååãããŒã¿ããŒã¹ããåé€ããŸããã æªäœ¿çšã®ããŒãã«ãèŠã€ããããã«ã次ã®ææ³ã䜿çšããŸããïŒtcpdumpã䜿çšããŠã1æ¥ã§ããŒã¿ããŒã¹ãžã®ãã¹ãŠã®ã¯ãšãªãåéãããã®ãã³ãã®ããŒãã«ã®ãªã¹ããçŸåšã®ããŒã¿ããŒã¹ã¹ããŒã ãšäº€å·®ããã念ã®ãããã³ãŒãã§æªäœ¿çšã®ããŒãã«ãæ€çŽ¢ããŸããïŒåæã«ã³ãŒããã¯ãªã¢ããŸããïŒã Tcpdumpã¯ãMySQLããŒã«ã䜿çšããŠãã¹ãŠã®ãªã¯ãšã¹ãããã°ã«æžã蟌ãã®ãšã¯ç°ãªããããŒã¿ããŒã¹ã®åèµ·åãå¿ èŠãšããããªã¯ãšã¹ãåŠçã®é床ã«åœ±é¿ãäžããªãããã䜿çšãããŸããã ãã¡ãããããŒãã«ãããã«åé€ããã®ã¯æãã®ã§ãæåã¯ç¹å¥ãªãµãã£ãã¯ã¹ãä»ããŠããŒãã«ã®ååãå€æŽããæ°é±éåŸ ã£ãŠããåé€ããŸããïŒçç±ã¯ãæ£åœãªçç±ã§åä¿éºãããŠãããããããã€ãã®äœåãªæªäœ¿çšã®ããŒãã«ãé倱ã«ãã£ãŠããã¯ãããè¿åããå¿ èŠããããŸããïŒã
次ã«ãããŒã¿ããŒã¹å€æçšã®DDLã®äœæãéå§ããŸããã ãã®ããã«ãããã€ãã®æšæºãã¿ãŒã³ã䜿çšãããŸããã
- ããŒãã«ã«ããã¹ããã£ãŒã«ãããªãã£ãå ŽåïŒ å¿µã®ãã ãçªç¶è¿œå ããŸãïŒãã¯ãšãªãå®è¡ããŸãããalter table `my_table` default character set utf8;
- ããŒãã«ã«åœéåãå¿ èŠãªvarcharããã¹ããã£ãŒã«ããããªãå ŽåïŒ alter table `my_table` convert to character set utf8;
- ASCIIæåã®ã¿ãå«ããã£ãŒã«ãã¯ASCIIã«å€æãããŸããïŒ alter table `my_table` modify` my_column` varcharïŒnïŒcharacter set ascii ...;
- åœéåãå¿ èŠãªãã£ãŒã«ãã¯æšæºã§ãïŒ alter table `my_table` modify` my_column` varcharïŒnïŒcharacter set utf8 ...;
- ããããäžæã®ã€ã³ããã¯ã¹ãæã€äžéšã®ãã£ãŒã«ãã§ã¯ãæåeãšeã®ç §åutf8_general_ci ïŒ cp1251_general_ciãšã¯ç°ãªããŸã ïŒãçãããããæŸèæã䜿ããªããã°ãªããŸããã§ãã ïŒ alter table `my_table` modify` my_column` varcharïŒnïŒcharater set utf8 collatââe utf8_bin ...;
- å€æåŸã®ã€ã³ããã¯ã¹ãžã®å€æãåæ¢ããã€ã³ããã¯ã¹ãã£ãŒã«ãã«ã€ããŠã¯ãæŸèæãå¿ èŠã§ããïŒ ããŒãã« `my_table`ããããã€ã³ããã¯ã¹` my_index`ã®å€æŽã `my_column` varcharïŒnïŒæåã»ããutf8 ...ã®å€æŽãã€ã³ããã¯ã¹` my_index`ïŒ `my_column`ïŒ mïŒïŒ; ïŒããã§ã m <n ãããã³ã€ã³ããã¯ã¹ã¯ãååãšããŠãããã€ãã®ãã£ãŒã«ãã«ãŸããã£ãŠããŸãïŒ;
- ãã€ããªããŒã¿ãå«ãããã¹ããã£ãŒã«ãã¯ã ãã€ããªãšvarbinaryã«å€æãããŸããã
- CP1251ã®ããã¹ãæååãå«ããã€ããªãã£ãŒã«ãã¯2ã€ã®æ¹æ³ã§å€æãããŸããïŒ alter table `my_table` modify` my_column` varcharïŒnïŒcharacter set cp1251; alter table `my_table` modify` my_column` varcharïŒnïŒæåã»ããutf8 ; ããã¯ãæåã®ã¯ãšãªMySQLãããŒã¿ãcp1251ã§ãšã³ã³ãŒããããŠããããšãç解ãã2çªç®ã®ã¯ãšãªããããutf8ã«å€æããããã«å¿ èŠã§ãã
- ããã¹ããããã¯åå¥ã«åŠçããå¿ èŠããããŸãããããã¯ã æåã»ããutf8ãžã®å€æã§ã¯ããã¹ãŠã®æåã3ãã€ãé·ã§ããæ倧é·ã®ããã¹ãã«åãããŠMySQLãããããæå°ã«æ¡åŒµããããã§ãã ã€ãŸãã ããã¹ãã¯èªåçã«mediumtextã«å±éãããŸã ã å€ãã®å Žåãããã¯ç§ãã¡ãæãã§ãããã®ã§ã¯ãªããããæ瀺çã«æå®ããŸãããalter table `my_table` alter` my_column`ããã¹ãæåã»ããutf8;
- ãããŠããã¡ãããå°æ¥ã®ããã«ãæåŸã®ã³ãŒãïŒ alter database `my_database`ããã©ã«ãæåã»ããutf8;
å€ææã®ããŠã³ã¿ã€ã ãªãã§ããŒã¹ãUTF-8ã«å€æããã¿ã¹ã¯ã¯ãéåžžã®æ¹æ³ãã€ãŸãã¬ããªã«ã䜿çšããŠè§£æ±ºãããŸããã ããããæ©èœãªãã§ã¯ãããŸããã ãŸãããŠã£ã¶ãŒãããã¬ããªã«ãååŸãããšãã«æååãèªåçã«å€æãããããã«ããã«ã¯ã ã¹ããŒãã¡ã³ãã¢ãŒãã§ã¬ããªã±ãŒã·ã§ã³ãå¿ é ã§ããããšãå¿ èŠã§ããrawã¢ãŒãã§ã¯ãå€æã¯å®è¡ãããŸããã 次ã«ã ã¹ããŒãã¡ã³ãã¬ããªã±ãŒã·ã§ã³ã«åãæ¿ããã«ã¯ã ãã©ã³ã¶ã¯ã·ã§ã³åé¢ã¬ãã«ãããã©ã«ãã®å埩å¯èœèªã¿åãããã³ãããã® èªã¿åãã«å€æŽããå¿ èŠããããŸãã
å®éã«æ¬¡ã®ããã«å€æãããŸãã
- ãŠã£ã¶ãŒããã¹ããŒãã¡ã³ãè€è£œã¢ãŒãã«åãæ¿ããŸãã
- å€æã®ããã«ããŒã¿ããŒã¹ã®äžæã³ããŒãäœæãããã®äžã§å€æãå®è¡ããŸãã
- å€æã®æåŸã«ãã¡ã€ã³ããŒã¿ããŒã¹ããã¬ããªã«ã¢ãŒãã«ã³ããŒã転éããŸããããŒã¿ãè¿œãã€ããè¡ããã®å Žã§å€æãããŸãã
- åã¬ããªã«ããŒã¹ã«ã€ããŠïŒ
-è² è·ãã¬ããªã«ããäžæã¬ããªã«ã«UTF-8ã§è»¢éããŸãã
-ãã¹ãŠã®ã¬ããªã«ãäžæããŒã¹ãããŒããã転éããããããè€è£œãæå¹ã«ããŸãã
-è² è·ãã¬ããªã«ã«æ»ããŸãã - äžæããŒã¹ããŠã£ã¶ãŒãã¢ãŒãã«è»¢éããNATã䜿çšããŠå€ããã¹ã¿ãŒããäžæãã¹ã¿ãŒã«èŠæ±ã転éããŸãã
- å€ããã¹ã¿ãŒãã¿ã€ã ããŒã¹ãã転éããã¬ããªã±ãŒã·ã§ã³ã«è¿œãã€ããŸãã
- ãã¹ã¿ãŒãå ã«æ»ããNATãåé€ããã¬ããªã±ãŒã·ã§ã³ãæ··åã«æ»ããŸãã
- äžæããŒã¹ãç¡å¹ã«ããŸãã
ãã®çµæã3ãæéã®éªšã®æããäœæ¥ã§ã15åã®ç°ãªãããŒã¹ã¹ããŒã ã§98åãã¹ãŠã®ãã¹ã¿ãŒïŒããã³ã¬ããªã«ã®æïŒãå€æããããšãã§ããŸããïŒç¹ã«å€§ããª1ã€ã®750GBããŒã¹ãã»ãŒ2é±éã®ãã·ã³æéã§å€æãããŸããïŒã 管çè ã¯æ³£ããå€ã¯ç ããŸããã§ããïŒéçºè ã«ç ãããªãããšããããŸããïŒããããã§ãç§ãã¡ãæãã»ã©éãã¯ãªãããã»ã¹ãç¶ããã æåã«ã圌ãã¯æåãæã¿ãäžèšã®ã¹ããŒã ã«åŸã£ãŠå€æãå®è¡ããŸãã;ããã»ã¹ãã¹ããŒãã¢ããããããã«ã圌ãã¯SSDãã£ã¹ã¯ãæèŒãããã·ã³ã䜿çšããŸããã ãããã3ãæç®ã®çµããã«ããã®ç¶æ³ã§ã¯ããã«2ãæãå¿ èŠã§ããããšã«æ°ä»ãã圌ãã¯ããã«èãããããè² è·å šäœãã¬ããªã«ãããã¹ã¿ãŒã«è»¢éããå€ãã¬ããªã«ã«çŽæ¥å€æãå§ããŸããã 幞ããªããšã«ããã®æéäžã«ãã¹ã¿ãŒã§ç°åžžãªç¶æ³ã¯çºçããã1é±é以å ã«ïŒäž»ã«ã¬ããªã«ãããªã匱ãå€ãè»ã§å転ããŠããããïŒãå€æã¯å®äºããŸããã
ããŒã¿ããŒã¹èªäœã®å€æã«å ããŠãã³ãŒãã§UTF-8ã®ãµããŒããååŸããã¹ã ãŒãºã§ç®ç«ããªã移è¡ãä¿èšŒããããšãå¿ èŠã§ããã ãã ããMySQLã§ã¯ãã¹ãŠãç°¡åã§ãã äºå®ã圌ã¯ããŒã¿ãä¿åããåå¥ã®ãšã³ã³ãŒãã£ã³ã°ãšãã¯ã©ã€ã¢ã³ãã«ããŒã¿ãæäŸããåå¥ã®ãšã³ã³ãŒãã£ã³ã°ãæã£ãŠããŸãã æŽå²çã«ããµãŒããŒäžã§ã¯ã character_set_ * = cp1251ãšæžãããŠããŸãã ã ãã©ã¡ãŒã¿character_set_clientãcharacter_set_connectionãcharacter_set_resultsã«ã€ããŠã¯ãå€ãã¯ã©ã€ã¢ã³ããå£ããªãããã«äœãå€æŽãããcp1251ãæ®ããŸããã æ®ãã¯utf8ã«çœ®ãæããããŸããã ãã®çµæãcp1251ã§åäœããå€ãã¯ã©ã€ã¢ã³ãã¯ãããŒã¿ããŒã¹ãå€æãããŠãããã©ããã«é¢ä¿ãªãcp1251ã§ããŒã¿ãåä¿¡ããæ¥ç¶ã確ç«ããåŸãUTF-8ã§åäœããæ°ããã¯ã©ã€ã¢ã³ãã¯ããã«set names utf8ã³ãã³ããå®è¡ããŸã; ãã®ãšã³ã³ãŒãã®ãã¹ãŠã®å©ç¹ã䜿çšãå§ããŸãã
ã¿ã©ã³ããŒã«
ã¿ã©ã³ãã¥ã©ãšã¯äœãªã®ããããããããŸããã ãã®My Worldã®çºæ¡ã¯ãã§ã«ååãªå声ãåŸãŠãããåªãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«æé·ããŠããŸãããã®äœ¿çšã®é·å¹Žã«ããã£ãŠãç§ãã¡ã¯ãã®äžã«èšå€§ãªéã®æ å ±ãèç©ããããšãã§ããŸããããããŠãã¿ã©ã³ãã¥ã©ã®ã€ã³ã¹ã¿ã³ã¹ã400åããããšãå€æãããšããççŽã«èšã£ãŠãå€æã«æéããããã®ã¯æãã£ãã§ãã ãããã幞ããªããšã«ããã®ãã¡60ã®ã¿ãããã¹ããã£ãŒã«ãïŒäž»ã«ãŠãŒã¶ãŒãããã¡ã€ã«ïŒãæã£ãŠããããšãããããŸããã
確ãã«ãã¿ã©ã³ãã¥ã©ã®ãã©ã³ã¹ã³ãŒãã£ã³ã°ã¯éåžžã«èå³æ·±ãã¿ã¹ã¯ã§ããããšãå€æããŸããã ãããŠã解決çã¯éåžžã«ãšã¬ã¬ã³ãã§ããã ãããããã¡ãããå®å šã«ãã®ãŸãŸã§ã¯ãããŸããã ã¿ã©ã³ããŒã«ããªãŒãã³ãœãŒã¹ãããžã§ã¯ããšããŠéçºãå§ããåŸãã³ãã¥ããã£ãšç§ãã¡ã®ããŒãºã¯ãããã«ç°ãªãããšãå€æãããšããæŽå²çãªäºå®ãããã«ç¢ºèªããŸãã ã³ãã¥ããã£ã«ã¯ããããããã補åãããã«äœ¿ããããŒããªã¥ãŒã¹ãã¬ãŒãžãå¿ èŠã§ãããã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ïŒã¹ãã¬ãŒãžãæžã蟌ãããã®ãã¬ãŒã ã¯ãŒã¯ïŒãé«åºŠã«ç¹æ®åãããè¿œå æ©èœãããã©ãŒãã³ã¹æé©åãåãã補åãå¿ èŠã§ãã ãã®ãããã©ããã§ã¿ã©ã³ããŒã«ã䜿ãç¶ããã©ããã§æåã®ã¿ã©ã³ãã¥ã©ã®äœè ãéçºãããã©ãŒã¯ã¿ã³ã䜿ãå§ããŸããã ããã«ãããå€æããã»ã¹ãå€§å¹ ã«ç°¡çŽ åãããŸããã å®éãã¿ã³ã§ã¯luaã«è€è£œãã£ã«ã¿ãŒãæžã蟌ãããšãã§ããŸããã€ãŸãããŠã£ã¶ãŒãã®ã¹ãããã·ã§ãããšxlogããå ã®ã³ãã³ããéä¿¡ããã®ã§ã¯ãªããluaé¢æ°ã䜿çšããŠå€æŽãééããŸãã ãã®æ©èœã¯ããã¹ã¿ãŒããã®ãã¹ãŠã®ããŒã¿ã§ã¯ãªããç¹å®ã®ã¿ãã«ãã£ãŒã«ãã®ã¿ãå«ãéšåã¬ããªã«ãäœæã§ããããã«ããããã«ãããªãåã«è¿œå ãããŸããã ãããŠãç§ãã¡ã¯åãæ¹æ³ã§ãè€è£œã®ããã»ã¹ã§ãã®å Žã§ããã¹ãããã©ã³ã¹ã³ãŒãã§ãããšããèããåŸãŸããã
ããã§ãããã®ã¿ã¹ã¯ã®ã¿ã³ã¯ãããã«çµäºããå¿ èŠããããŸããïŒ ãã£ãŒã㌠ïŒxlogã¬ããªã«ãäŸçµŠãããŠã£ã¶ãŒãããã»ã¹ïŒã¯é·ãéå¥åã®ã¿ã³ã¢ãžã¥ãŒã«mod_feederãšããŠå®è£ ãããŠããŸããããã¹ãã¬ãŒãžãªãã§ã¯åå¥ã«èµ·åã§ããŸããã§ããïŒãã®å Žåã ã㌠- mod_boxã¢ãžã¥ãŒã«ã«ãã£ãŠå®è£ ãããå€ïŒãããã¯ãã¬ããªã±ãŒã·ã§ã³ã¡ã«ããºã ã®å€æŽããŠã£ã¶ãŒãã®åèµ·åãå¿ èŠãšããªãããã«ããããã«å¿ èŠã§ããã ãã¡ãããç§ã¯luaã§ã¬ããªã±ãŒã·ã§ã³ãã£ã«ã¿ãŒãäœæããå¿ èŠããããŸãããããã¯ãåå空éããšã«å¿ èŠãªãã£ãŒã«ããCP1251ããUTF-8ã«å€æããŸããã
ã¿ã©ã³ãã¥ã©ãšã¿ã³ã§å®éã«ããŒã¿ãå€æããããšã«å ããŠããŸã å€æãããŠããããŸã å€æãããŠããªãã·ã£ãŒãã䜿çšããŠã³ãŒãã®ééçãªåäœã確ä¿ãããšãšãã«ãCP1251ã§ã®äœæ¥ããUTF-8ã§ã®äœæ¥ãžã®ã¢ãããã¯ã¹ã€ããã³ã°ãæäŸããå¿ èŠããããŸããã ãã®ãããã¹ãã¬ãŒãžã®åã«ç¹å¥ãªãã©ã³ã¹ã³ãŒãã£ã³ã°ãããã·ãé 眮ããããšã決å®ãããŸãããããã¯ãã¯ã©ã€ã¢ã³ãã®ãªã¯ãšã¹ãã®ãã©ã°ã«å¿ããŠãããŒã¹ãšã³ã³ãŒãã£ã³ã°ããã¯ã©ã€ã¢ã³ããšã³ã³ãŒãã£ã³ã°ã«ããŒã¿ãå€æããŸãã ããã§ãã¿ã³ãåã³ç§ãã¡ã®å©ãã«ãªããŸããããŸãã¯ã mod_colanderã¢ãžã¥ãŒã«ã䜿çšãããšãluaãå«ãé«éãããã·ãµãŒããŒãäœæã§ããŸãïŒã¿ã³ã¯luajitãšffiã䜿çšãããããéåžžã«çç£çã§ãïŒã
åèšã§ãtarantool / octopusããUTF-8ãžã®å€æã¹ããŒã ã¯æ¬¡ã®ãšããã§ãã
- ãã¹ã¿ãŒãšã¬ããªã«ã§utf8proxyãæ§æããŸãã ã¿ã©ã³ãã¥ã©ã以åèããŠãã枯ã§ãããäžããå¥ã®æž¯ã«ã¿ã©ã³ãã¥ã©èªèº«ãåèšçœ®ããŸãã ãã以éãã¯ã©ã€ã¢ã³ãã¯CP1251ãšUTF-8ã®äž¡æ¹ã§èŠæ±ãæºããããšãã§ããŸãã
- ãŠã£ã¶ãŒããåãããµãŒããŒã§ãå€æutf8feederãå®è¡ãããŠã£ã¶ãŒããæžã蟌ãåããã£ã¬ã¯ããªããã¹ãããã·ã§ãããšxlogãèªã¿åãããã«æ§æããŸãã
- å¥ã®ãµãŒããŒã§ã¯ããŠã£ã¶ãŒãã®äžæçãªã¬ããªã«ãäœæããå€æäžã®ãã£ãŒããŒããè€è£œããããã«æ§æããŸãã ããŒã¿ã¯ãUTF-8ãšã³ã³ãŒãã£ã³ã°ã§äžæçãªã¬ããªã«ã«ãã§ã«å°çããŠããŸãã
- äžæã¬ããªã«ããè€è£œããããã«æ§æããutf8proxyã¬ããªã«ãäžæã¬ããªã«ããå€ãã¬ããªã«ã転éããŠãããè² è·ãæ»ããŸãã
- ããŒããutf8proxyãã¹ã¿ãŒã«ãã¡ã€ã¢ãŠã©ãŒã«ãïŒæŽæ°ã«ç«¶åããªãããã«ïŒã utf8proxyãäžæã¬ããªã«ã«åæ§æããäžæã¬ããªã«ãäžæãã¹ã¿ãŒã«ããå€ããã¹ã¿ãŒãæ¶æ» ãããããŒããutf8proxyã«èµ·åããŸãã
- æ°ãããã¹ã¿ãŒãäžæçãªãã¹ã¿ãŒãã転éããã¬ããªã«ãè€è£œã«åãæ¿ããŸãã
- utf8proxyã䜿çšããŠãæ°ãããã¹ã¿ãŒããã¹ã¿ãŒã«ããäžæãã¹ã¿ãŒããªãã«ããŸãã ãã®ã¹ãããã§ã¯ããã¹ãŠã®ã€ã³ã¹ã¿ã³ã¹ã«UTF-8ã®ããŒã¿ãå«ãŸããŠãããããã¯ã©ã€ã¢ã³ãããéããªã«æåã®ããã¹ãã®æžã蟌ã¿ãéå§ã§ããŸãã
- ãã¹ãŠã®ã¯ã©ã€ã¢ã³ããUTF-8ã«ç§»è¡ããåŸã utf8proxyãåé€ããŸãã
ã¿ã©ã³ãã¥ã©/ã¿ã³ã®ãã©ã³ã¹ã³ãŒãã®ããã»ã¹å šäœã«çŽ1ãæããããŸããã æ®å¿µãªãããããã€ãã®ãªãŒããŒã¬ã€ããããŸãããè€æ°ã®ã·ã£ãŒãã䞊è¡ããŠå€æããããããã¹ã¿ãŒãæ»ããšãã«2ã€ã®ã·ã£ãŒããæå®ã®å Žæã§æ··åšãããããšãã§ããŸããã åé¡ãçºèŠããããŸã§ã«ãããªãã®éã®ããŒã¿å€æŽããã§ã«çºçããŠããŸããã äž¡æ¹ã®ã·ã£ãŒãããã®xlogãåæããæ£çŸ©ãå埩ããå¿ èŠããããŸããã
Memcached
äžèŠããã£ãã·ã¥ã®å€æãæãç°¡åã ãšæãããŸãïŒãããã«ãããæåã¯ããã§ããïŒïŒå¥ã®ååã®ããŒã«UTF-8ãæžã蟌ãããä»ã®ã€ã³ã¹ã¿ã³ã¹ã«æžã蟌ã¿ãŸãã ããããå®éã«ã¯ããã¯ããŸããããŸããã ããã«ã¯2ã€ã®çç±ããããŸãã1ã€ç®ã¯ã2åã®ãã£ãã·ã¥ãå¿ èŠã«ãªãããšã2ã€ç®ã¯ããšã³ã³ãŒããåãæ¿ãããšãã«ãã£ãã·ã¥ãéå ç±ã«ãªãããšã§ãã è€æ°ã®ãµãŒããŒéã§ã¹ã ãŒãºã«åãæ¿ããããšã§2çªç®ã®åé¡ã«å¯ŸåŠã§ããå Žåãå€æ°ã®ãã£ãã·ã¥ãããå Žåãæåã®åé¡ã¯ã¯ããã«è€éã«ãªããŸãããã®ãããåããŒã«ããã®ããŒãæ ŒçŽãããŠãããšã³ã³ãŒãã£ã³ã°ã«é¢ãããã©ã°ãç«ãŠããšãããã¹ããã©ããŸããã ããã«ã ãã£ãã·ã¥ã®ããŒã«ã¯ã©ã€ã¢ã³ã:: Memcached :: Fast memcacheã«ã¯æ¢ã«ãã®æ©èœããããŸãïŒ ããŒãã©ã° ïŒ F_UTF8 = 0x4 ïŒã®1ã€ã§memcacheã«è¡ãä¿åãããšãã SVf_UTF8è¡ã®å éšããŒã«ãã©ã°ãæžã蟌ã¿ãŸãã ã ãããã£ãŠããã©ã°ãèšå®ãããŠããå Žåãè¡ã¯UTF-8ã§æ確ã«ãªããããã§ãªãå Žåããã¹ãŠãå°ãè€éã«ãªããŸãããã®è¡ã¯CP1251ã®ããã¹ããŸãã¯ãã€ããªã®ããããã§ãã ãã¡ãããå¿ èŠã«å¿ããŠããã¹ãæååãå€æããŸããããã€ããªã«åé¡ããããŸããïŒäžå¿ èŠãªå€æã§ããããå£ããªãããã«ãããã¹ãæååãšãã€ããªã®set / getïŒãªã©ïŒã¡ãœãããåé¢ããmemcachedã«ä¿åããããã¹ãŠã®ãã€ããªæååãèŠã€ããããããåãåããèªåãã©ã³ã¹ã³ãŒãã£ã³ã°ãªãã§é©åãªæ¹æ³ã«çœ®ãæããŸãã åãã³ãŒããã·ãã·ã¥ã³ãŒãã«é©çšããã F_UTF8ãã©ã°ã®ãµããŒããè¿œå ãããŸããã
ãã®ä»ã®ãªããžããª
åè¿°ã®æšæºãªããžããªã«å ããŠããæ°æ©èœãã®ããŒããã³ã¡ã³ããã¡ãã»ãŒãžãã¥ãŒããã€ã¢ãã°ãæ€çŽ¢ãªã©ãä¿åããããã«äœ¿çšãããèšå€§ãªæ°ã®èªå·±èšè¿°åãªããžããªã䜿çšããŸãã ããããã«ã€ããŠè©³ãã説æããã®ã§ã¯ãªããäž»ãªã±ãŒã¹ãšãããã解決ããæ¹æ³ã«ã®ã¿æ³šç®ããŸãã- ããŠã³ã¿ã€ã ãªãã§ã¹ãã¬ãŒãžãå€æããããšã¯å°é£ã§ãããŸãã¯ãããã«æ°ããã¹ãã¬ãŒãžã«ããŒã¿ã転éãããã寿åœã®çãããŒã¿ã転éããäºå®ã§ãã ãã®ãããªå ŽåãããŒã¿ã¯å€æãããŸããã§ããããæ°ããã¬ã³ãŒãã«ã¯ãã¬ã³ãŒãå šäœãã©ã®ãšã³ã³ãŒãã£ã³ã°ã«å«ãŸããŠãããã瀺ããã©ã°ã䜿çšããããUTF-8ã®å Žåã¯åæååãã£ãŒã«ãã®å é ã«BOMããŒã«ãŒã䜿çšãããšãã2ã€ã®æ¹æ³ã®ããããã§ãšã³ã³ãŒãã£ã³ã°èšå·ãä»ããããŸããã
- è¡èªäœããªããžããªã«ä¿åãããã®ã§ã¯ãªãããããããã®ããã·ã¥åèšãä¿åãããŸãã æ€çŽ¢ã®ããã«äœ¿çšãããŸãã 圌ãã¯ãUTF-8ã«å€æãããå ã®æååããããã·ã¥åèšãåã¬ã³ããªã³ã°ããã¹ã¯ãªããã䜿çšããŠããªããžããªå šäœãæ©ãåããŸããã å€ææã«ã¯ãåæ€çŽ¢ã¯ãšãªã«å¯ŸããŠããŒã¿ããŒã¹ãžã®2ã€ã®ã¯ãšãªãå®è¡ããå¿ èŠããããŸããã1ã€ã¯CP1251ã§ããã1ã€ã¯UTF-8ã§ãã
- ãªããžããªã®åã«ãããã·ãæ¢ã«ã€ã³ã¹ããŒã«ãããŠããããªããžããªãžã®ãã¹ãŠã®ãªã¯ãšã¹ãã¯ãããã·ãééããŸãã ãã®å Žåãã¿ã©ã³ãã¥ã©ã®å Žåãšåæ§ã«ãããã·ã«å€æãããŸãããã¿ã©ã³ãã¥ã©ã®äžæçãªæ©èœã§ããå Žåãå¯äžã®éãã¯ããã®å ŽåãããŒã¿ããŒã¹ã«ä¿åãããŠããããŒã¿ãé¢é£ãããŸã§æ®ãããšã§ãã
ã³ãŒãã§ã®UTF-8ãµããŒã
管çè ãããŒã¿ããŒã¹ãå€æããæ¹æ³ãšäžŠè¡ããŠãéçºè ã¯ã³ãŒããUTF-8ãšã³ã³ãŒãã£ã³ã°ã§åäœããããã«é©åãããŸããã ã³ãŒãããŒã¹å šäœã¯ãPerlãCããã³ãã¬ãŒãã®3ã€ã®éšåã«æ¡ä»¶ä»ãã§åå²ãããŠããŸãããããžã§ã¯ããUTF-8ãšã³ã³ãŒãã£ã³ã°ã«åãæ¿ããæé ãèšèšããéã®éèŠãªèŠä»¶ã®1ã€ã¯ã1ã€ã®ãµãŒããŒãåãæ¿ããæ©èœã§ããã ãŸããããã¯ãæåã«ãã¹ã¿ãŒã®åªåã«ãã£ãŠã次ã«ãŠãŒã¶ãŒã®æ°ããŒã»ã³ãã«ãã£ãŠãæŠéããŒã¹ã䜿çšããŠUTF-8ã§ãããžã§ã¯ãããã¹ãããå¯èœæ§ã確ä¿ããããã«å¿ èŠã§ããã
Perlããã³UTF-8
UTF-8ã§åäœããããã«ããŒã«ã³ãŒããé©åãããã«ã¯ãããã€ãã®åºæ¬çãªåé¡ã解決ããå¿ èŠããããŸããã- ã³ãŒãã«æ£åšããããªã«æååãå€æããŸãã
- ãã¹ãŠã®ã¹ãã¬ãŒãžãšãµãŒãã¹ã«æ¥ç¶ãããšãã¯ããµãŒããŒã®ãšã³ã³ãŒããæ€èšããŠãã ããã
- HTTPãªã¯ãšã¹ãã®ãã©ã¡ãŒã¿ãããµãŒããŒãå®è¡ãããŠãããšã³ã³ãŒãã£ã³ã°ã«å«ãŸããªãå¯èœæ§ãããããšãèæ ®ããŠãã ããã
- ãµãŒããŒãšã³ã³ãŒãã£ã³ã°ã§ã³ã³ãã³ããæäŸããæ£ãããã³ãã¬ãŒãã䜿çšããå¿ èŠããããŸãã
- ãã€ãæååãšæååãæ確ã«è«ççã«åé¢ããå ¥åã§UTF-8ïŒãã€ãããæåïŒããã³ãŒãããåºåã§ãšã³ã³ãŒãããå¿ èŠããããŸãã
ããŒã«ã³ãŒããCP1251ããUTF-8ã«å€æãããšããã¿ã¹ã¯ãããéèªæãªæ¹æ³ã§è§£æ±ºããŸããïŒãã£ã«ã¿ãŒã䜿çšããŠã³ã³ãã€ã«ãããšãã«ããã®å Žã§ã¢ãžã¥ãŒã«ãå€æããããšããå§ããŸããïŒ perlfilterããã³Filter :: Util :: Callãåç §ããŠãã ããããã£ã¹ã¯ãšã³ã³ãã€ã«ïŒã ããã¯ããªããžããªãã©ã³ãã®ããŒãžäžã«è€æ°ã®ç«¶åãåé¿ããããã«å¿ èŠã§ãããããã¯ã1ã€ã®å¥åã®ãã©ã³ãã§ã¬ããžããªãå€æããéçºããã³ãã¹ãããã»ã¹äžã«ä¿ç®¡ããããšããå Žåã«çºçããŸãã ãã¹ãããã»ã¹å šäœãšèµ·ååŸæåã®1é±éããµãŒããŒãUTF-8ãšããŠæ§æãããŠããå ŽåããœãŒã¹ã³ãŒãã¯åŒãç¶ãCP1251ã«æ®ããããŒã¢ã³ã®èµ·åæã«ããã«ãµãŒããŒã§çŽæ¥å€æãããŸããã ããŒã³ãã®1é±éåŸããªããžããªãå€æããããã«ãã¹ã¿ãŒã§çµæãåçµããŸããã ãã®çµæãããŒãžãšã®ç«¶åã¯ããã®æç¹ã§éçºäžã ã£ããã©ã³ãã§ã®ã¿çºçããŸããã
æãã«ãŒãã³ã¯ãUTF-8å šäœã«å€æããªãã£ãã¹ãã¬ãŒãžã®èªåæååå€æãå¿ èŠãªãã¹ãŠã®å Žæã«è¿œå ããããã»ã¹ã§ããã ããããçç ã§ã®æååå€æãäžèŠãªå Žåã§ããçç ã§ã¯ãã€ãæååãšæååã®éã«å·®ãããïŒãããŠéèŠãªïŒããšãèæ ®ããå¿ èŠããããŸããã ãã¡ãããããŒã¿ããŒã¹ããèªã¿åã£ãåŸããã¹ãŠã®ããã¹ãè¡ãèªåçã«ã·ã³ããªãã¯ã«ãããã£ãããããã€ããªããŒã¿ã転éããããããã¹ãã§ãããã«ã€ããŠãã¹ãŠã®å ¥å/åºåãåæããå¿ èŠãããããã¹ãŠã®å¿ èŠãªè¡ãunpackedãšããŠããŒã¯ããããã«pack / unpackã®ãã¹ãŠã®åŒã³åºããå®è¡ããå¿ èŠããããŸããã·ã³ããªãã¯ïŒãŸãã¯ããã±ãŒãžãäœæããåã«ãæååãã€ããäœæããŠãé·ããæåã§ã¯ãªããã€ãã§ã«ãŠã³ãããïŒã
HTTPãªã¯ãšã¹ããã©ã¡ãŒã¿ãCP1251ãŸãã¯UTF-8ïŒãªãã¡ã©ãŒããŒãžãèªã¿èŸŒãŸãããšã³ã³ãŒãã£ã³ã°ã«å¿ããŠïŒã«æ¥ããšããäºå®ã®åé¡ã¯ããªã¯ãšã¹ãã§è¿œå ã®ãã©ã¡ãŒã¿ãæž¡ãããšã§æåã«è§£æ±ºããããšãæãŸããŠããŸããã ãããããã®åŸãCP1251ãšUTF-8ãã©ã®ããã«ãšã³ã³ãŒããããŠããããåæããåŸãæååãæå¹ãªUTF-8ã§ãããã©ããããã§ãã¯ããããšã§ãCP1251ã®ããªã«æåãšUTF-8ã®ããªã«æåãåžžã«æ確ã«åºå¥ã§ãããšããçµè«ã«éããŸããCP1251ã§ã¯ãæå¹ãªUTF-8ãã³ã³ãã€ã«ããããšã¯ã»ãšãã©äžå¯èœã§ãã
äžè¬ã«ãUTF-8ã§ã®äœæ¥ãçç ã§çµç¹åãããæ¹æ³ã¯ãéåžžã«äŸ¿å©ã§ã¯ãããŸãããããã§ãéæ³ã§ããããšãå€ãã次ã®ããšã«çæããå¿ èŠããããŸãã
- è¡ã«SVf_UTF8ãã©ã°ãããããšãå¿ããŠãã ããïŒãããã°ã«ã®ã¿åœ¹ç«ã¡ãŸãïŒã代ããã«ãè¡ããã€ããšæåãšããŠæ±ãæ¹ãè¯ãã§ãããã©ã°SVf_UTF8ãæã€çç ç·ã®å éšè¡šçŸãUTF-8ã§ããããšãå¿ããŠãã ããã
- é¢æ°Encode :: _ utf8_onïŒïŒãEncode :: _ utf8_offïŒïŒãutf8 :: upgradeïŒïŒãutf8 :: downgradeïŒïŒãutf8 :: is_utf8ïŒïŒãutf8 :: validïŒïŒ;
- æåã®UnicodeæååãUTF-8ã«å€æãããšãã¯ã utf8 :: encodeïŒïŒã䜿çšããŸãã
- ããŒã«ã®å Žåã UTF-8ãšã³ã³ãŒãã£ã³ã°ãšutf8ãšã³ã³ãŒãã£ã³ã°ã¯ãããã«ç°ãªããšã³ã³ãŒãã£ã³ã°ã§ããããšãèæ ®ããŠãã ããïŒæåã®å Žåãã³ãŒããã€ã³ã<= 0x10FFFFïŒUnicodeæšæºã§å®çŸ©ãããŠããïŒã®ã¿ãæå¹ã§ã2çªç®ã®å ŽåãIVïŒã¢ãŒããã¯ãã£ã«å¿ããŠint32ãŸãã¯int64ïŒã UTF-8ãšã³ã³ãŒãã¢ã«ãŽãªãºã ã䜿çšããŠãšã³ã³ãŒãã
- ãããã£ãŠã utf8 :: decodeïŒïŒã¯ãUTF-8ãç¡å¹ã«ã§ããªãä¿¡é Œã§ãããœãŒã¹ïŒç¬èªã®ããŒã¿ããŒã¹ïŒããã®ãã³ãŒãã«ã®ã¿äœ¿çšã§ããå€éšå ¥åããã³ãŒããããšãã¯åžžã«Encode :: decodeïŒ 'UTF-8 'ã$ _ïŒ Unicodeã®èŠ³ç¹ããç¡å¹ãªã³ãŒããã€ã³ãããä¿è·ããŸãã
- utf8 :: decodeïŒïŒé¢æ°ã®çµæã¯ããã€ãæååãæå¹ãªutf8ã§ãããã©ããã確èªããã®ã«åœ¹ç«ã€å Žåãããããšãå¿ããªãã§ãã ãããæå¹ãªUTF-8ã®ç¢ºèªãšåãç®çã§ã Encode :: decodeïŒïŒã® 3çªç®ã®ãã©ã¡ãŒã¿ãŒã䜿çšã§ããŸãã
- latin1ããŒãã«ã®äžååã«ã¯åãçªå·ã®Unicodeã³ãŒããã€ã³ããšåãæåãå«ãŸããŠããŸãããUTF-8ã§ã¯ç°ãªãæ¹æ³ã§ãšã³ã³ãŒããããããšã«æ³šæããŠãã ããã ããã¯ã誀ã£ãããã«ã³ãŒã«utf8 :: decodeïŒïŒã®çµæã«åœ±é¿ããŸããASCIIããŒãã«ã®ã³ãŒããã€ã³ãã®ã¿ãå«ãæååããŸãã¯ã³ãŒããã€ã³ã> 0xffã®æåãå°ãªããšã1ã€å«ãæååã®å Žåããã¹ãŠãæ£åžžã«åäœããŸãããããŒãã«latin1ãšasciiã®äžååã§ãlatin1ã®ãã£ã©ã¯ã¿ãŒãbeãããŸãã
- ææ°ã®çç ã䜿çšããŠãã ããã perl 5.8.8ã§ããã°ããããã°ãæãä»ããŸããïŒ äœ¿çšãã±ãŒã«ãšæ£ããå ¥åãæã€ããã€ãã®æ£èŠè¡šçŸã®çµã¿åããã«ãããæ£èŠã®ç¡éã«ãŒããçºçããŸãã å³å¯ã«å¿ èŠãªé¢æ°ã®ã»ããïŒ sortãcmpãltãleãgtãgeãlcãucãlcfirstãucfirstïŒã«ã€ããŠã®ã¿ããã±ãŒã«ã®äœ¿çšç¯å²ãå¯èœãªéãå¶éããå¿ èŠããããŸããã
Cããã³UTF-8
幞ããªããšã«ãCã³ãŒãã«ã¯çç ã»ã©å€ãã®è¡ããããŸããã§ããã®ã§ãå€å žçãªéãæ©ããŸããããã¹ãŠã®ããªã«è¡ãå¥ã®ãã¡ã€ã«ã«åããŸããã ããã«ãããåäžãã¡ã€ã«å ã®ããŒãžãšã®æœåšçãªç«¶åãå¶éããããšãã§ãããã®åŸã®ããŒã«ã©ã€ãºãç°¡çŽ åãããŸããã ãªããžããªãUTF-8ã«å€æããéçšã§ã圌ãã¯äœãé¢çœããã®ãèŠã€ããŸãã-ã³ãŒãå ã®ãã·ã¢èªã®ã³ã¡ã³ãã¯ã4ã€ã®ããªã«æåãšã³ã³ãŒãïŒcp1251ãcp866ãkoi8-rãiso8859-5ïŒã«å«ãŸããŠããŸããã å€æäžã«ç¹å®ã®åè¡ã®ãšã³ã³ãŒãã£ã³ã°ã®èªåæ€åºã䜿çšããå¿ èŠããããŸããããªããžããªã®å€æã«å ããŠãCã¯åºæ¬çãªæååé¢æ°ã®ãµããŒããå¿ èŠãšããŸããïŒæåã®é·ãã®æ±ºå®ãã¬ãžã¹ã¿ã®ãã£ã¹ããé·ãã«ããæååã®ããªãã³ã°ãªã©ãCã§Unicodeãæäœããããã®ãã°ãããlibicuã©ã€ãã©ãªããããŸãããå éšè¡šçŸãšããŠUTF-16ã䜿çšããŸãã ãã¡ãããUTF-8ãšUTF-16ã®éã®ãã©ã³ã¹ã³ãŒãã£ã³ã°ã®ãªãŒããŒããããåé¿ãããã£ããããæãäžè¬çã«äœ¿çšãããåçŽãªé¢æ°ã§ã¯ããã©ã³ã¹ã³ãŒãã£ã³ã°ãªãã§UTF-8ã§çŽæ¥åäœããã¢ããã°ãå®è£ ããå¿ èŠããããŸããã
ãã³ãã¬ãŒããjavascriptããã³UTF-8
幞ããªããšã«ããã³ãã¬ãŒãã䜿çšãããšããã¹ãŠãéåžžã«ã·ã³ãã«ã«ãªããŸããã æ¬çªç°å¢ã§ã¯ããããã¯rpmããã±ãŒãžã«é 眮ãããŠãããããè«ççãªè§£æ±ºçã¯ãã©ã³ã¹ã³ãŒããrpmãã«ãããã»ã¹ã«ã«ããããããšã§ããã UTF-8ã®ãã³ãã¬ãŒããå«ãããã±ãŒãžããã1ã€è¿œå ããŸãããããã¯é£æ¥ãããã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ããããã®åŸã³ãŒãïŒpearlãšsylvianã®äž¡æ¹ïŒã¯å¯Ÿå¿ãããã£ã¬ã¯ããªãããã³ãã¬ãŒããéžæããŸãããJavaScriptã䜿çšãããšããã®ãŸãŸã§ã¯æ©èœããŸããã§ããã JavaScriptãããŒããããšããã»ãšãã©ã®ãã©ãŠã¶ãŒã¯ãã®Content-Typeãèæ ®ããŸãããããã§ãªãå€ãã€ã³ã¹ã¿ã³ã¹ãããã€ããããŸãããããŒãžãšã³ã³ãŒãã£ã³ã°ã«çŠç¹ãåœãŠãŠããŸãã ãããã£ãŠã圌ãã¯æŸèæã眮ããŸãïŒjavascriptã§ããã±ãŒãžãæ§ç¯ãããšãããã¹ãŠã®éASCIIæåãã³ãŒããã€ã³ãçªå·ã®åœ¢åŒã®ãšã¹ã±ãŒãã·ãŒã±ã³ã¹ã«çœ®ãæããŸããã ãã®ã¢ãããŒãã§ã¯ãjsã®ãµã€ãºã¯å€§ãããªããŸããããã©ãŠã¶ãŒã¯ãããæ£ããããŒãããŸãã
çµæã¯äœã§ãã
æåŸã«ãå幎åŸããœãªãã£ã¢ã¯äžç·ã«ãªããŸããã 管çè ã¯æ°çŸã®ããŒã¿ããŒã¹ã®åã³ãŒãã£ã³ã°ãå®äºããéçºè ã¯ã³ãŒããçµäºãããã¹ãããã»ã¹ãçµäºããŸããã ã¯ãŒã«ãã³ã³ãããŒã«ããã«ã®ãããåŸã ã«åãæ¿ããŸããããŸããååã®ãã¹ãŠã®ã¢ã«ãŠã³ããUTF-8ã«è»¢éããã次ã«ãŠãŒã¶ãŒã®1ïŒ ã転éããããã®åŸããã¯ãšã³ããµãŒããŒãš10å°ã®ããã³ããšã³ããµãŒããŒããããã10ãµãŒããŒãã€åãæ¿ãå§ããŸããã èŠèŠçã«ã¯ããããžã§ã¯ãããŒãžãããŒãã¹ã±ãžã¥ãŒã«ãå€æŽããããåã°ãã«ã¯ããããŸããã§ããã çç±ãªãå幎ãçµéããããšãæããã«ãªã£ãå¯äžã®å€éšã®å€æŽã¯ã char- set = windows-1251ã®Content-Typeè¡ãcharset = UTF-8ã«å€æŽããããšã§ãããããã3ãæãçµã¡ããã·ã¢èªã話ããŠãŒã¶ãŒã¯ãã§ã«ããã¹ãã«çµµæåããã®ä»ã®ããããªããšãæ¿å ¥ããæ©èœãé«ãè©äŸ¡ããŠãããã«ã¶ãèªã¯æ¯åœèªã§å¯Ÿå¿ãå§ããæè¿ã§ã¯ãŠã§ãã€ã³ã¿ãŒãã§ã€ã¹ãšã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ãæ¯åœèªã§äœ¿çšããæ©äŒããããŸãã unicode'izationã«ç¶ããããžã§ã¯ãã®åœéåãšããŒã«ãªãŒãŒã·ã§ã³ã®ããã»ã¹ã«ã¯ãèå³æ·±ãã¿ã¹ã¯ãååã«ãããŸãããããã«ã€ããŠã¯å¥ã®èšäºãäœæããããã«ããŸãã