PHPµ{¦¡³]p¤¤¤¤¤å½s½X°ÝÃD´¿¸g§xÂZ«Ü¦h¤H¡A¾ÉP³oÓ°ÝÃDªºì¦]¨ä¹ê«Ü²³æ¡A¨CÓ°ê®a(©Î°Ï°ì)³£³W©w¤F¹q¸£¸ê°T¥æ´«¥Îªº¦r²Å½s½X¶°¡A¦p¬ü°êªºÂX®i ASCII ½X, ¤¤°êªº GB2312-80¡A¤é¥»ªº JIS µ¥¡C§@¬°¸Ó°ê®a/°Ï°ì¤º¸ê°T³B²zªº°ò¦¡A¦r²Å½s½X¶°°_µÛ²Î¤@½s½Xªº«n§@¥Î¡C¦r²Å½s½X¶°«öªø«×¤À¬° SBCS(³æ¦r¸`¦r²Å¶°)¡ADBCS(Âù¦r¸`¦r²Å¶°)¨â¤jÃþ¡C¦´Áªº³nÅé(¤×¨ä¬O§@·~¨t²Î)¡A¬°¤F¸Ñ¨M¥»¦a¦r²Å¸ê°Tªº¹q¸£³B²z¡A¥X²{¤F¦UºØ¥»¦a¤Æª©¥»(L10N)¡A¬°¤F°Ï¤À¡A¤Þ¶i¤F LANG, Codepage µ¥·§©À¡C¦ý¬O¥Ñ©ó¦UÓ¥»¦a¦r²Å¶°¥N½X½d³ò«Å|¡A¬Û¤¬¶¡¸ê°T¥æ´«§xÃø;³nÅé¦UÓ¥»¦a¤Æª©¥»¿W¥ßºûÅ@¦¨¥»¸û°ª¡C¦]¦¹¦³¥²n±N¥»¦a¤Æ¤u§@¤¤ªº¦@©Ê©â¨ú¥X¨Ó¡A§@¤@P³B²z¡A±N¯S§Oªº¥»¦a¤Æ³B²z¤º®e°§C¨ì³Ì¤Ö¡C³o¤]´N¬O©Ò¿×ªº°ê»Ú¤Æ(118N)¡C¦UºØ»y¨¥¸ê°T³Q¶i¤@¨B³W½d¬° Locale ¸ê°T¡C³B²zªº©³¼h¦r²Å¶°Åܦ¨¤F´X¥G¥]§t¤F©Ò¦³¦r§Îªº Unicode¡C
²{¦b¤j³¡¤À¨ã¦³°ê»Ú¤Æ¯S¼xªº³nÅé®Ö¤ß¦r²Å³B²z³£¬O¥H Unicode ¬°°ò¦ªº¡A¦b³nÅé¹B¦æ®É®Ú¾Ú·í®Éªºocale/Lang/Codepage ³]¸m½T©w¬ÛÀ³ªº¥»¦a¦r²Å½s½X³]¸m¡A¨Ã¨Ì¦¹³B²z¥»¦a¦r²Å¡C¦b³B²z¹Lµ{¤¤»Ýn¹ê²{ Unicode ©M¥»¦a¦r²Å¶°ªº¬Û¤¬Âà´«¡A¬Æ©Î¥H Unicode ¬°¤¤¶¡ªº¨âÓ¤£¦P¥»¦a¦r²Å¶°ªº¬Û¤¬Âà´«¡C³oºØ¤è¦¡¦bºô¸ôÀô¹Ò¤U³Q¶i¤@¨B©µ¦ù¡A¥ô¦óºô¸ô¨âºÝªº¦r²Å¸ê°T¤]»Ýn®Ú¾Ú¦r²Å¶°ªº³]¸mÂà´«¦¨¥i±µ¨üªº¤º®e¡C
¼Æ¾Ú®w¤¤ªº¦r²Å¶°½s½X°ÝÃD
¬y¦æªºÃö¨t¼Æ¾Ú®w¨t²Î³£¤ä´©¼Æ¾Ú®w¦r²Å¶°½s½X¡A¤]´N¬O»¡¦b³Ð«Ø¼Æ¾Ú®w®É¥i¥H«ü©w¥¦¦Û¤vªº¦r²Å¶°³]¸m¡A¼Æ¾Ú®wªº¼Æ¾Ú¥H«ü©wªº½s½X§Î¦¡¦sÀx¡C·íÀ³¥Îµ{¦¡³X°Ý¼Æ¾Ú®É¡A¦b¤J¤f©M¥X¤f³B³£·|¦³¦r²Å¶°½s½XªºÂà´«¡C¹ï©ó¤¤¤å¼Æ¾Ú¡A¼Æ¾Ú®w¦r²Å½s½Xªº³]¸mÀ³·í«OÃҼƾڪº§¹¾ã©Ê¡CGB2312¡BGBK¡BUTF-8 µ¥³£¬O¥i¿ïªº¼Æ¾Ú®w¦r²Å¶°½s½X;·íµM§Ṳ́]¥i¥H¿ï¾Ü ISO8859-1 (8-bit)¡A¥u¬O§Ú̱o¦bÀ³
¥Îµ{¦¡¼g¼Æ¾Ú¤§«e¥ý±N 16Bit ªº¤@Óº~¦r©Î Unicode ©î¤À¦¨¨âÓ 8-bit ªº¦r²Å¡AŪ¼Æ¾Ú¤§«á¤]»Ýn±N¨âÓ¦r¸`¦X¨Ö°_¨Ó¡A¦P®ÉÁÙn§P§O¨ä¤¤ªº SBCS ¦r²Å¡A¦]¦¹§Ų́䣱ÀÂ˱ĥΠISO8859-1 §@¬°¼Æ¾Ú®w¦r²Å¶°½s½X¡C³o¼Ë¤£¦ý¨S¦³¥R¤À§Q¥Î¼Æ¾Ú®w¦Û¨ªº¦r²Å¶°½s½X¤ä´©¡A¦Ó¥B¦P®É¤]¼W¥[¤F½sµ{ªº½ÆÂø«×¡C½sµ{®É¡A¥i¥H¥ý¥Î¼Æ¾Ú®wºÞ²z¨t²Î´£¨ÑªººÞ²z¥\¯àÀˬd¨ä¤¤ªº¤¤¤å¼Æ¾Ú¬O§_¥¿½T¡C
PHP µ{¦¡¦b¬d¸ß¼Æ¾Ú®w¤§«e¡Aº¥ý°õ¦æ mysql_query("SET NAMES xxxx"); ¨ä¤¤ xxxx ¬O§Aºô¶ªº½s½X(charset=xxxx)¡A¦pªGºô¶¤¤ charset=utf8¡A«h xxxx=utf8¡A¦pªGºô¶¤¤ charset=gb2312¡A«hxxxx=gb2312¡A´X¥G©Ò¦³ WEB µ{¦¡¡A³£¦³¤@¬q³s±µ¼Æ¾Ú®wªº¤½¦@¥N½X¡A©ñ¦b¤@Ó¤å¥óùØ¡A¦b³o¤å¥óùØ¡A¥[¤J mysql_query("SET NAMES xxxx") ´N¥i¥H¤F¡C
SET NAMES Åã¥Ü«È¤áºÝµo°eªº SQL »y¥y¤¤¨Ï¥Î¤°»ò¦r²Å¶°¡C¦]¦¹¡ASET NAMES 'utf-8' »y¥y§i¶D¦øªA¾¹¡§±N¨Ó±q³oӫȤáºÝ¶Ç¨Óªº¸ê°T±Ä¥Î¦r²Å¶° utf-8¡¨¡C¥¦ÁÙ¬°¦øªA¾¹µo°e¦^«È¤áºÝªºµ²ªG«ü©w¤F¦r²Å¶°(¨Ò¦p¡A¦pªG§A¨Ï¥Î¤@Ó SELECT »y¥y¡A¥¦ªí¥Ü¦CȨϥΤF¤°»ò¦r²Å¶°)¡C
©w¦ì°ÝÃD®É±`¥Îªº§Þ¥©
©w¦ì¤¤¤å½s½X°ÝÃD³q±`±Ä¥Î³Ì²Âªº¤]¬O³Ì¦³®Äªº¿ìªk¢w¦b§A»{¬°¦³¶ûºÃªºµ{¦¡³B²z«á¦C¦L¦r²Å¦êªº¤º½X¡C³q¹L¦C¦L¦r²Å¦êªº¤º½X¡A§A¥i¥Hµo²{¤°»ò®ÉÔ¤¤¤å¦r²Å³QÂà´«¦¨ Unicode¡A¤°»ò®ÉÔUnicode ³QÂà¦^¤¤¤å¤º½X¡A¤°»ò®ÉÔ¤@Ó¤¤¤å¦r¦¨¤F¨âÓ Unicode ¦r²Å¡A¤°»ò®ÉÔ¤¤¤å¦r²Å¦ê³QÂন¤F¤@¦ê°Ý¸¹¡A¤°»ò®ÉÔ¤¤¤å¦r²Å¦êªº°ª¦ì³QºI±¼¤F¡K¡K
¨ú¥Î¦X¾Aªº¼Ë¥»¦r²Å¦ê¤]¦³§U©ó°Ï¤À°ÝÃDªºÃþ«¬¡C¦p¡G"aa°Ú aa?@aa" µ¥¤¤^¬Û¶¡¡AGB¡BGBK¯S¼x¦r²Å§¡¦³ªº¦r²Å¦ê¡C¤@¯ë¨Ó»¡¡A^¤å¦r²ÅµL½×«ç»òÂà´«©Î³B²z¡A³£¤£·|¥¢¯u(¦pªG¹J¨ì¤F¡A¥i¥H¹Á¸ÕµÛ¼W¥[³sÄòªº^¤å¦r¥Àªø«×)¡C
¸Ñ¨M¦UºØÀ³¥Îªº¶Ã½X°ÝÃD
1) ¨Ï¥Î ¼Ðñ³]¸m¶±½s½X
³oÓ¼Ðñªº§@¥Î¬OÁn©ú«È¤áºÝªºÂsÄý¾¹¥Î¤°»ò¦r²Å¶°½s½XÅã¥Ü¸Ó¶±¡Axxx ¥i¥H¬° GB2312¡BGBK¡BUTF-8(©M MySQL ¤£¦P¡AMySQL ¬O UTF8)µ¥µ¥¡C¦]¦¹¡A¤j³¡¤À¶±¥i¥H±Ä¥Î³oºØ¤è¦¡¨Ó§i¶DÂsÄý¾¹Åã¥Ü³oÓ¶±ªº®ÉԱĥΤ°»ò½s½X¡A³o¼Ë¤~¤£·|³y¦¨½s½X¿ù»~¦Ó²£¥Í¶Ã½X¡C¦ý¬O¦³ªº®ÉÔ§ÚÌ·|µo²{¦³¤F³o¥yÁÙ¬O¤£¦æ¡A¤£ºÞ xxx ¬Oþ¤@ºØ¡AÂsÄý¾¹±Ä¥Îªº©l²×³£¬O¤@ºØ½s½X¡A³oÓ±¡ªp§Ú«á±·|½Í¨ì¡C
½Ðª`·N¡A ¬OÄÝ©ó HTML ¸ê°Tªº¡A¶È¶È¬O¤@ÓÁn©ú¡A¶Èªí©ú¦øªA¾¹¤w¸g§â HTML ¸ê°T¶Ç¨ì¤FÂsÄý¾¹¡C
2) header("content-type:text/html; charset=xxx");
³oÓ¨ç¼Æ header() ªº§@¥Î¬O§â¬A©·ùرªº¸ê°Tµo¨ì http ¼ÐÀY¡C¦pªG¬A©·ùرªº¤º®e¬°¤å¤¤©Ò»¡¨º¼Ë¡A¨º§@¥Î©M ¼Ðñ°ò¥»¬Û¦P¡A¤j®a¹ï·Ó²Ä¤@Ӭݵo²{¦r²Å³£®t¤£¦hªº¡C¦ý¬O¤£¦Pªº¬O¦pªG¦³³o¬q¨ç¼Æ¡AÂsÄý¾¹´N·|¥Ã»·±Ä¥Î§A©Òn¨Dªº xxx ½s½X¡Aµ´¹ï¤£·|¤£Å¥¸Ü¡A¦]¦¹³oÓ¨ç¼Æ¬O«Ü¦³¥Îªº¡C¬°¤°»ò·|³o¼Ë©O?¨º´N±o»¡»¡ http ¼ÐÀY©M HTML¸ê°Tªº®t§O¤F¡G
http ¼ÐÀY¬O¦øªA¾¹¥H http ¨óij¶Ç°e HTML ¸ê°T¨ìÂsÄý¾¹«e©Ò°e¥Xªº¦r¦ê¡C¦Ó ¼Ðñ¬OÄÝ©ó HTML ¸ê°Tªº¡A©Ò¥H header() µo°eªº¤º®e¥ý¨ì¹FÂsÄý¾¹¡A³q«UÂI´N¬O header() ªºÀu¥ý¯Å°ª©ó (¤£ª¾¹D¥i¤£¥i¥H³o¼ËÁ¿)¡C°²¦p¤@Ó php ¶±¬J¦³header("content-type:text/html;charset=xxx")¡A¤S¦³¡AÂsÄý¾¹´N¥u»{«eªÌ http ¼ÐÀY¦Ó¤£»{ meta ¤F¡C·íµM³oÓ¨ç¼Æ¥u¯à¦b php ¶±¤º¨Ï¥Î¡C
¦P¼Ë¤]¯d¦³¤@Ó°ÝÃD¡A¬°¤°»ò«eªÌ´Nµ´¹ï°_§@¥Î¡A¦Ó«áªÌ¦³®ÉÔ´N¤£¦æ©O?³o´N¬O±µ¤U¨Ón½ÍªºApache ªºì¦]¤F¡C
3) AddDefaultCharset
Apache ®Ú¥Ø¿ýªº conf ¤å¥ó§¨ùØ¡A¦³¾ãÓ Apache ªº°t¸m¤åÀÉ httpd.conf¡C
¥Î¤å¥»½s¿è¾¹¥´¶} httpd.conf¡A²Ä 708 ¦æ(¤£¦Pª©¥»¥i¯à¤£¦P)¦³ AddDefaultCharset xxx¡Axxx¬°½s½X¦WºÙ¡C³o¦æ¥N½Xªº·N«ä¡G³]¸m¾ãÓ¦øªA¾¹¤ºªººô¶¤å¥ó http ¼ÐÀYùتº¦r²Å¶°¬°§AÀq»{ªº xxx¦r²Å¶°¡C¦³³o¦æ¡A´N¬Û·í©óµ¹¨CÓ¤å¥ó³£¥[¤F¤@¦æ header("content-type:text/html; charset=xxx")¡C³o¤U´N©ú¥Õ¬°¤°»ò©ú©ú ³]¸m¤F¬O utf-8¡A¥iÂsÄý¾¹©l²×±Ä¥Î gb2312 ªºì¦]¡C
¦pªGºô¶ùئ³ header("content-type:text/html; charset=xxx")¡A´N§âÀq»{ªº¦r²Å¶°§ï¬°§A³]¸mªº¦r²Å¶°¡A©Ò¥H³oÓ¨ç¼Æ¥Ã»·¦³¥Î¡C¦pªG§â AddDefaultCharset xxx «e±¥[Ó"#"¡AµùÄÀ±¼³o¥y¡A¦Ó¥B¶±ùؤ£§t header("content-type¡K")¡A¨º³oÓ®ÉÔ´N½ü¨ì meta ¼Ðñ°_§@¥Î¤F¡C
¤U±¦C¥X¥H¤WªºÀu¥ý¶¶§Ç¡G
.. header("content-type:text/html; charset=xxx")
.. AddDefaultCharset xxx
..
¦pªG§A¬O web µ{¦¡û¡A«ØÄ³µ¹§Aªº¨CÓ¶±³£¥[Óheader("content-type:text/html;charset=xxx")¡A³o¼Ë´N¥i¥H«OÃÒ¥¦¦b¥ô¦ó¦øªA¾¹³£¯à¥¿½TÅã¥Ü¡A¥iÄâ©Ê¤]¤ñ¸û±j¡C
4) php.ini ¤¤ªº default_charset °t¸m¡G
php.ini ¤¤ªº default_charset = "gb2312" ©w¸q¤F php ªºÀq»{»y¨¥¦r²Å¶°¡C¤@¯ë±ÀÂ˵ùÄÀ±¼¦¹¦æ¡AÅýÂsÄý¾¹®Ú¾Úºô¶ÀY¤¤ªº charset ¨Ó¦Û°Ê¿ï¾Ü»y¨¥¦Ó«D°µ¤@Ó±j¨î©Êªº³W©w¡A³o¼Ë´N¥i¥H¦b¦P»O¦øªA¾¹¤W´£¨Ñ¦hºØ»y¨¥ªººô¶ªA°È¡C
µ²§ô»y
¨ä¹ê php ¶}µo¤¤ªº¤¤¤å½s½X¨Ã¨S¦³·Q¹³ªº¨º»ò½ÆÂø¡AÁöµM©w¦ì©M¸Ñ¨M°ÝÃD¨S¦³©w³W¡A¦UºØ¹B¦æÀô¹Ò¤]¦U¤£¾¨µM¡A¦ý«á±ªºì²z¬O¤@¼Ëªº¡C¤F¸Ñ¦r²Å¶°ªºª¾ÃѬO¸Ñ¨M¦r²Å°ÝÃDªº°ò¦¡C¤£¹L¡AÀHµÛ¤¤¤å¦r²Å¶°ªºÅܤơA¤£¶È¶È¬O php ½sµ{¡A¤¤¤å¸ê°T³B²z¤¤ªº°ÝÃDÁÙ¬O·|¦s¦b¤@¬q®É¶¡ªº¡C
¡]³d¥ô½s¿è¡G¶³¤l¡^