# setenv LC_CTYPE zh_TW.Big5 # setenv LANG zh_TW.Big5
Note: 5.x ªºÂ²Åé¨Ï¥ÎªÌ½Ð¥Î¡G
# setenv LC_CTYPE zh_CN.GBK # setenv LANG zh_CN.GBK4.x ªºÂ²Åé¨Ï¥ÎªÌ½Ð¥Î¡G
# setenv LC_CTYPE zh_CN.encCN # setenv LANG zh_CN.eucCN
locale ¬O¤@²Õ C µ{¦¡»y¨¥³B²z¦ÛµM»y¨¥(¤å¦r)ªºµ{¦¡¤¶±¡A ¤]¥i¥H²³æªº»¡¡Alocale ´N¬O¤@²Õ¦a°Ï©Ê»y¨¥ªº¸ê°T¡C ¥Ñ°ê®a»y¨¥©M¦U¦a²ß«U¼vÅT©Ò¨M©wªººD¨Ò¡A©Î¥Nªí¤@Ó¦a²z°Ï°ìªº©w¸q©Ò²Õ¦¨¡A ³o¨ÇºD¨Ò¥]§t¤å¦r¡B¤é´Á¡B¼Æ¦r¡B³f¹ô®æ¦¡©M±Æ§Çµ¥µ¥¡C³o¥NªíµÛ locale ¥iÅýµ{¦¡ªº¿é¥X¥i¥Hª½±µ¤ÏÀ³¦a¤è°Ï°ì©Êªº¤å¤Æ¡CC »y¨¥ªº locale ©w¸q¡A¤À¬°¤U¦C¦U¤jÃþ¡G
LC_ALL «ü©w©Ò¦³ªº Locale
LC_CTYPE ¦r¤¸©w¸q (¥]§t¦r¤¸¤ÀÃþ»PÂà´«³W«h)
LANG »y¨¥Åã¥Ü
LC_MESSAGES °T®§Åã¥Ü
LC_TIME ®É¶¡®æ¦¡
LC_NUMERIC ¼Æ¦r®æ¦¡
LC_MONETARY ³f¹ô®æ¦¡
LC_COLLATE ¦r¥À¶¶§Ç»P¯S®í¦r¤¸¤ñ¸û
¨ä¤¤»P¤@¯ë¨Ï¥ÎªÌ®§®§¬ÛÃöªº¡A¬O¦r¤¸©w¸q (LC_CTYPE) »P»y¨¥Åã¥Ü (LANG)¡CLC_CTYPE ª½±µÃö«Y¨ì¬Y¨Ç¦r¤¸©Î¤º½X¦b¥Ø«eªº locale ¤U¬O§_¥i¦C¦L¡Hn¦p¦óÂà´«¦r½X¡H¹ïÀ³¨ìþ¤@Ó¦r¡H.... µ¥µ¥¡CLANG «hÃö«Y¨ì³nÅ骺°T®§¿é¥X¬O¤£¬O²Å¦X¦a°ì©Ê¡A¨Ò¦p ¡G§ÚÌ»Ýnªº¬O¤¤¤å¡C¦Ó¤@Ó¯u¥¿§¹¾ã¤ä´© locale ¨t²Î¡A ¬O·í¨Ï¥ÎªÌ¦b shell prompt ¤U¡Aª½±µ³]¦nÀô¹ÒÅܼƫá¡A «h°¨¤W´N¯à¤Á´«¨ì¨ºÓ»y¨¥¤F¡C·í LC_MESSAGES¡BLC_TIME¡BLC_NUMERIC¡B LC_MONETARY µ¥¨S¦³³]©wªº®ÉÔ¡A·|ª½±µ¨ú¥Î LANG ªºÀô¹Ò³]©wÈ¡C
³]©w Locale ªº¦r¤¸©w¸q¬°¥xÆW¦a°Ïªº Big5 ÁcÅ餤¤å½X©w¸q¡A ¦³¤F¥¿½Tªº locale ªº©w¸q«á¡A¨Ï±o¥ô¦ó¦a°Ïªº»y¤å¡A¥un¦b¥[¤J¾A·íªº locale data ¤§«á¡AC Library ´N¯à¥¿½T¦a³B²z³nÅéÅã¥Ü°T®§¡A ¦Ó§Ų́ϥΪº¤¤¤å·íµM¤]¤£¨Ò¥~¡A¦Ó¥Ø«e±`¥Îªº¤¤¤å locale data ´N¬O zh_TW.Big5¡A¥Nªíªº´N¬O¤¤¤å»y¨t(zh)¥xÆW¦a°Ï(TW) ¨Ï¥ÎBig5½s½X¨t²Î(Big5)¡C
Note: locale ©R¦W³W«h¡G»y¨¥_¦a°Ï¦W.¦r¤¸½s½X¦WºÙ
·í¤@Óµ{¦¡±Ò°Ê®É¡A¨t²Î·|¹w³]µ¹¥¦¤@Óªì©l locale¡AºÙ¬° POSIX ©Î C locale¡C¦b¦¹ locale ¤U¡Aµ{¦¡ªºªí²{·|»P¶Ç²Îªº C »y¨¥¤¤¤@¼Ë¡A ¨Ï¥Î^¤å°µ°T®§¿é¥X¡A¥u¯à³B²z^¤åµ¥ ASCII ½Xµ¥µ¥¡C ¦pªG¸Óµ{¦¡¦³¤ä´© I18N¡A¤]´N¬O»¡¥¦¦³«ö·Ó I18N ªº¼Ð·Ç¨Ó¼g¡A «h¥¦¦b±Ò°Ê«á´N·|°¨¤W©I¥s¨t²Î¨ç¦¡¨Ó§ïÅÜ¥¦ªº locale¡A ¦p¦¹¥¦´N·n¨¤@ÅÜ¡AÅܦ¨¥i¥H³B²z¸Ó locale ©Ò¥Nªíªº¦a°Ï»y¤å¤F¡C
zh_TW.Big5 ¬O¥Ø«e¥xÆW¤º¼sªx¨Ï¥Îªº locale¡A zh ¬OµØ»y(Chinese)¡A1998 ¦~ ISO639 ¸Ì±¥H¨âÓ^¤å¦r¥À¨Ó¥Nªí»y¨¥½s½X¡A ³oÓÁY¼g¾Úµ§ªÌ©Òª¾¨S¦³¥ô¦ó§t¸q¡A¦Ó TW ¥Nªíªº´N¬O¥xÆW(Taiwan) ¦a°ÏªºÁY¼g¡A³Ì«áªº Big5 «h¬O½s½X¤è¦¡¡C
locale ³]©wÀɦb½sĶ«á¡A «h¬OÀx¦s¦b /usr/share/locale/ ¥Ø¿ý¤U¡A ¥H zh_TW.Big5 locale ¬°¨Ò¡A¸Ó¥Ø¿ý¤¤´N¥]§t¤F LC_COLLATE¡BLC_CTYPE¡B LC_TIME¡C
¦Ó LC_MESSAGES «h¬OÀx¦s¦b /usr/local/share/locale/zh_TW/LC_MESSAGES/ ©Î¬O /usr/X11R6/share/locale/zh_TW.Big5/ ©³¤U¡C¥Ñ©ó LC_MESSAGES Ãþ§O´xºÞªº¬Oµ{¦¡°T®§¿é¥X©Ò¥Îªº»y¨¥¡A ¦Ó¥B¤£¦Pµ{¦¡¶¡ªº°T®§³£¤£·|¤@¼Ë¡A¦]¦¹¥¦¤£¯à¹³¨ä¥LÃþ§O¤@¼Ë¡A ¥u´£¨Ñ³æ¤@¤@Ó¸ê®ÆÀɧY¥i¡C¬Û¤Ïªº¡A ¦b³oùةұĨúªº¤è¦¡¬O¥Ñ¦UÀ³¥Îµ{¦¡¦Û¦æ´£¨Ñ¥¦Ìªº°T®§¸ê®ÆÀÉ¡A ¨Ã²Î¤@©ñ¦b¦U locale ªº LC_MESSAGES ªº¥Ø¿ý¤U¡C¨Ò¦p mutt µ{¦¡¡A ¨ä°T®§ªº³¡¤À°£¤F^¤å¥H¥~¡A¥i¯àÁÙ¦P®É´£¨Ñ¤FÁcÅ餤¤å¡B²Å餤¤å¡B ¤é¤å¡Bªk¤å µ¥Â½Ä¶¡A¦]¦¹¡A¦b¥H¤W³o¨Ç»y¤å©Ò¥Nªíªº locale ¤¤¡A ¨ä©³¤Uªº LC_MESSAGES ¥Ø¿ý¤¤³£·|¦³¤@¥÷ÄÝ©ó mutt µ{¦¡ªº°T®§¸ê®ÆÀÉ¡C ´«¥y¸Ü»¡¡A¦b I18N ¬[ºc¤U¡Aµ{¦¡°T®§³¡¤À¬O»Pµ{¦¡¤ÀÂ÷ªº¡A ¦p¦¹¤~¯à¤À§O¹ï¦U locale °µ ``°Ï°ì¤Æ'' (§Y½Ķ¦¨¦U¦a°Ïªº»y¨¥)¡C ¦p¦¹¡A·í mutt ¦b°õ¦æ®É¡A¨t²Î·|®Ú¾Ú¥Ø«e¥¦ªº LC_MESSAGES locale ³]©w¥h§ä§ä¬Ý¦³¨S¦³¥¦ªº°T®§¸ê®ÆÀɦs¦b¡A¦³ªº¸Ü´N¥H¸Ó»y¨¥°µ°T®§¿é¥X¡A §_«hªº¸Ü«h¥H C locale ªº¤è¦¡ (§Y^¤å) ¨Ó¿é¥X°T®§¡C
¥H¤W©Ò¦³ªº locale Ãþ§O¤¤¡A°£¤F LANG ¤§¥~¡A³Ì«nªº´N¬O LC_CTYPE ¤F¡C¦¹Ãþ§O´xºÞªº¬O¸Ó locale ¤¤©Ò¦³¦r¤¸ªº³B²z¤è¦¡¡C ¤@ÓÀ³¥Îµ{¦¡Yn¯à³Q ``°Ï°ì¤Æ'' ¦¨¬Y¦a°Ïªº»y¤å¡A ºn¤u§@´N¬On¯à³B²z¸Ó¦a°Ïªº¤å¦r¡C¨Ò¦p¨CÓ¦rªº¤º½X¦p¦ó½s½X¡H ¬O³æ¤@ byte ÁÙ¬O¥Ñ¦hÓ bytes ²Õ¦¨ªº¡H«ç¼Ëªº½s½X¤~¬O¦Xªk¥i¥Îªº¡H ³oÓ¦r¬O¤£¬O¥i¥H¦L¡H¬O¤£¬O¼Æ¦r¡HYµ¹©w¥ô·Nªº¤å¦r¦r¦ê¡A n¦p¦ó¯à°Ï¤À¥X¤@ÓÓ¦rµ¥µ¥¡C¦]¦¹¡A¦¹Ãþ§O²o¯Aªº¼h±¬Û·í¼s¡A °£¤Fµ{¦¡¥»¨ªº¤å¦r³B²z¯à¤O¥H¥~¡A¬Æ¦Ü¨ì X Window ¤¤ªº¤å¦rÅã¥Ü (§Y XOM: X Output Method)¡B¤å¦r¿é¤J (§Y XIM: X Input Method) µ¥µ¥¡A ³£»P¥¦¦³Ãö¡C¦]¦¹¡A·ín¶}©l¨Ï¥Î¤@Ӥ䴩 I18N ªºµ{¦¡¤§«e¡A ¤@©wn¥ý³]¦n LC_CTYPE ³oÓ locale Ãþ§O¡C
¥²¶·«ü©w zh_TW.Big5 ³oÓ locale Àô¹ÒÅܼƵ¹ Shell¡AShell ¤~¯à¥¿½Tªº³B²z¤¤¤å°T®§¡A¤@¯ë¦Ó¨¥¥un«ü©w locale ªº¦r¤¸©w¸q LC_CTYPE ¬° zh_TW.Big5 §Y¥iÅý Shell ¥¿½Tªº³B²z¤¤¤å¡AYnÅý Shell ªº¿é¥X°T®§¤]Åã¥Ü¤¤¤å¡A«h¥i±N locale °T®§Åã¥Ü LANG ¤]³]©w¬°¤¤¤åªº locale data¡C
¦Ü©ón³]©w stty pass8 ªºì¦]¬O¡A¥xÆW¦a°Ï©Ò³q¦æªº Big5 ½s½X¡A ¤Î¤j³°¦a°Ï©Ò¨Ï¥Îªº GB ½s½X¡A¨ä¶}ÀYªº¦ì¤¸´X¥G³£¬O¤j©ó 128 ªº¼ÆÈ¡A ¤]´N¬O©Ò¿× non-ASCII ½Xªº½d³ò(ASCII ¬O«ü¤p©ó 128 ªº½s½X)¡C ¤¤¤å°ÝÃD´N¦b³o¸Ì¡A³\¦hµ{¦¡¥Ñ©ó¦U¦¡¦U¼Ëªºì¦]¡A ¨Ã¥¼¦Ò¼{¨ì¿é¤Jªº¸ê®Æ¥i¯à¬O non-ASCII ½Xªº°ÝÃD¡A µ{¦¡©¹©¹°²³]¤F¦o©Òn³B²zªº¸ê®Æ³£¬O ASCII ½X (¦]¬°¤j³¡¤À³nÅ鬰¥~°ê¤Hµo®iªº)¡A§óÁV¿|ªº¬O¡A ·íµ{¦¡¹J¨ì non-ASCII ½X®É¡A±`±`°²³]¦o¤£¦s¦b¡A ¦Ó±N¥¦ªº²Ä¤KӦ줸ºI¥h¡A³o¬O©Ò¿×ªº 8-bit ¿é¤J¤¤¤å®É¡A ¨C¨C±N²Ä¤K¦ì¤¸¬å±¼¡A©Ò¥H¤¤¤å³£Åܦ¨¶Ã½X¡C¦]¦¹¥²¶·«ü©w stty pass8¡A ĵ§i Shell ¤£n±N¿é¤Jªº²Ä¤KӦ줸ºI±¼¡A³o¼Ë¤~¯à¥¿½TÅã¥Ü¤¤¤å¡C
ENABLE_STARTUP_LOCALE «h¬O a.out ¿òª«¡A¥L·|±j¨î ld.so ¸ü¤Jµ{¦¡«e¡A ¥ý©I¥s setlocale()¡A¦b 3.x «e´N§â³oÓ ugly hack ®³±¼¤F¡C
Ãö©ó¦r¤¸ªº¤ÀÃþ»P½s½X¡A¤@Ó locale ©Ò¥]§tªº¦Xªk¦r¤¸»P¨ä½s½X¤è¦¡¡A ºÙ¤§¬°¦r¶°(character set)¡C¥H zh_TW.Big5 locale ¬°¨Ò¡A ¨ä¹ê¥¦¤º³¡¥]§t¤F¨âÓ sub-character set¡A¤@Ó¬O ASCII ¥Î¨Óªí¥Ü¤@½sªº^¤å¡B¼Æ¦r¡B¹q¸£ºD¥Î²Å¸¹ µ¥µ¥¡A¥t¤@Ó´N¬O¥H Big5 ½s½X¤è¦¡ªº¡A«UºÙªº¥þ§Î¦r¡A¥]¬A¤F¤¤¤å¦r¡B ¥þ§Î^¤å¡B¼Æ¦r¡B¥H¤Î²Å¸¹ µ¥¡C«eªÌ¨CÓ¦r¤¸ªºªø«×¬O¤@Ó byte¡A¦Ó«áªÌ¨CÓ¦r¤¸ªºªø«×«h¬O¨âÓ byte¡C
¦b locale ªº³]©w¤¤¡A¥H LC_CTYPE ³Ì¬°«n¡A LC_CTYPE ¥]§t¤F¦r¤¸¤º½X¸ê°T¡A ª½±µ¼vÅT³¡¥÷ C ¨ç¦¡¶¤¦r¤¸ªº³B²zµ²ªG¡A¥]¬A¡G
ctype.h: isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(), ispunct(), isspace(), isupper(), isxdigit(), tolower(), toupper().
wctype.h: iswalnum(), iswalpha(), iswcntrl(), iswdigit(), iswgraph(), iswlower(), iswprint(), iswpunct(), iswspace(), iswupper(), iswxdigit(), towlower(), towupper().
stdlib.h: mblen(), mbtowc(), mbstowcs(), wctomb(), wcstombs().
zh_TW.Big5 LC_CTYPE locale ªº³]©wÀɦb /usr/src/share/mklocale/zh_TW.Big5.src¡A ¦b LC_CTYPE ªº³]©wÀɤ¤¡A¥¦±N©Ò¦³ªº¦r¤¸¤ÀÃþ¦¨¥H¤U´XºØ¡G
UPPER: «÷µ¦rªº¤j¼g¦r¡C LOWER: «÷µ¦rªº¤p¼g¦r¡C ALPHA: ©Ò¦³ªº«÷µ¦r¥À¡C DIGIT: ªü©Ô§B¼Æ¦r¡C SPACE: ªÅ¹j¦r¤¸¡A¦pªÅ¥Õ (space)¡B´«¦æ¡Btab ...¦r¤¸µ¥¡C XDIGIT: ¥Nªí¤Q¤»¶i¦ì¼Æ¦rªº¦r¤¸¡C BLANK: ªÅ¥Õ¦r¤¸¡A³q±`¥u¥]¬AªÅ¥Õ (space) »P tab ¨âÓ¡C CNTRL: ¹q¸£ªº±±¨î¦r¤¸¡C PUNCT: ¼ÐÂI²Å¸¹¡C GRAPH: ©Ò¦³¦³µ§µeªº¦r¤¸¡A¤£¥]¬AªÅ¥Õ»PªÅ®æ¡C PRINT: ©Ò¦³¥i¥H¦L¥Xªº¦r¤¸¡A¥]¬AªÅ¥Õ (blank) ¦r¤¸¡C TOUPPER: ¤p¼g«÷µ¦r¥ÀÂà¤j¼g«÷µ¦r¥Àªº¹ïÀ³ªí¡C TOLOWER: ¤j¼g«÷µ¦r¥ÀÂà¤p¼g«÷µ¦r¥Àªº¹ïÀ³ªí¡C