±ãÒËÔÆ·þÎñÆ÷
¿ª·¢ÕßÉçÇø
Îĵµ
½¨Òé·´À¡
¿ØÖÆ̨
µÇ¼/×¢²á
Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
×îÐÂÓŻݻ
ÎÄÕÂ/´ð°¸/¼¼Êõ´óÅ£
ËÑË÷
ËÑË÷
¹Ø±Õ
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,
¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù
Ê×Ò³
±êÇ©
sys
#
sys
¹Ø×¢
רÀ¸ÎÄÕÂ
(219)
¼¼ÊõÊÓƵ
(0)
»¥¶¯ÎÊ´ð
(7)
k8s»·¾³È±ÉÙcpu.weight£¿
0
»Ø´ð
linux
¡¢
cpu
¡¢
file
¡¢
fs
¡¢
sys
´óÉñ°ï¿´Ò»Ï£¿
0
»Ø´ð
buffer
¡¢
innodb
¡¢
mysql
¡¢
plugin
¡¢
sys
ΪʲôÎÒÃDz»Ó¦¸ÃÔÚpy½Å±¾ÖÐʹÓÃsys.setdefaultencode(¡°utf-8¡±)£¿
2
»Ø´ð
sys
¡¢
½Å±¾
ÏôÓêÄÁ¸è
DZÐÐÕß
TL£»DR ´ð°¸ÊǾø²»¿ÉÄÜ(³ý·ÇÄãÕæµÄÖªµÀ×Ô¼ºÔÚ×öʲô) 9/10±¶µÄ½â¾ö·½°¸¿ÉÒÔͨ¹ýÕýÈ·Àí½â±àÂë/½âÂëÀ´½â¾ö¡£ 1/10ÈËÓдíÎó¶¨ÒåµÄµØµã»ò»·¾³£¬ÐèÒªÉèÖ㺠PYTHONIOENCODING="UTF-8" ÔÚËûÃǵĻ·¾³ÖÐÐÞ¸´¿ØÖÆ̨´òÓ¡ÎÊÌâ¡£ ÊǸÉʲôµÄÄØ£¿ sys.setdefaultencoding("utf-8")(ΪÁ˱ÜÃâÖظ´Ê¹ÓÃ)ÿµ±Python2.xÐèÒª½«Unicode()ת»»Îªstr()(·´Ö®ÒàÈ»)ʱ£¬¾Í»á¸ü¸ÄĬÈϵıàÂë/½âÂ룬²¢ÇÒ²»»á¸ø³ö±àÂë¡£¼´£º str(u"\u20AC") unicode("€") "{}".format(u"\u20AC") ÔÚPython2.xÖУ¬Ä¬ÈϱàÂëÉèÖÃΪASCII£¬ÉÏÊöʾÀý½«Ê§°Ü£º UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) (ÎҵĿØÖÆ̨ÅäÖÃΪUTF-8£¬ËùÒÔ"€" = '\xe2\x82\xac'£¬Òò´ËÔÚ\xe2) »ò UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 0: ordinal not in range(128) sys.setdefaultencoding("utf-8")½«ÔÊÐíÕâЩ¹¤×÷ÎÒ£¬µ«²»Ò»¶¨ÊÊÓÃÓÚ²»Ê¹ÓÃUTF-8µÄÈË¡£asciµÄĬÈÏÉèÖÃÈ·±£±àÂëµÄ¼ÙÉè²»±»Ð´Èë´úÂëÖС£ ¿ØÖÆ̨ sys.setdefaultencoding("utf-8")Ò²ÓÐÒ»¸ö¸±×÷Óã¬ËƺõÐÞ¸´sys.stdout.encoding£¬µ±½«×Ö·û´òÓ¡µ½¿ØÖÆ̨ʱʹÓá£PythonʹÓÃÓû§µÄµØÇø(Linux/OSX/un)*(X)»ò´úÂëÒ³(Windows)ÉèÖôËÖµ¡£Å¼¶û£¬Óû§µÄÇøÓòÉèÖûáÖжϣ¬Ö»ÐèÒªPYTHONIOENCODINGÈôÒªÐÞ¸´¿ØÖÆ̨±àÂë¡£ Àý×Ó£º $ export LANG=en_GB.gibberish $ python >>> import sys >>> sys.stdout.encoding 'ANSI_X3.4-1968' >>> print u"\u20AC" Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 0: ordinal not in range(128) >>> exit() $ PYTHONIOENCODING=UTF-8 python >>> import sys >>> sys.stdout.encoding 'UTF-8' >>> print u"\u20AC" € ÓÐʲô²»ºÃµÄsys.setdefaultencode(¡°utf-8¡±)? 16ÄêÀ´£¬ÈËÃÇÒ»Ö±ÔÚʹÓÃPython2.x½øÐпª·¢£¬ÈËÃǵÄÀí½âÊÇĬÈϵıàÂëÊÇASCII¡£UnicodeErrorÒѾ±àдÁËÒì³£´¦Àí·½·¨À´´¦Àí×Ö·û´®µ½UnicodeµÄת»»£¬ÕâЩ×Ö·û´®±»·¢ÏÖ°üº¬·ÇASCII¡£ def welcome_message(byte_string): try: return u"%s runs your business" % byte_string except UnicodeError: return u"%s runs your business" % unicode(byte_string, encoding=detect_encoding(byte_string)) print(welcome_message(u"Angstrom (??)".encode("latin-1")) ÔÚÉèÖÃĬÈϱàÂë֮ǰ£¬Õâ¶Î´úÂ뽫ÎÞ·¨½âÂëascii±àÂëÖеġ°oi¡±£¬È»ºóÊäÈëÒì³£´¦Àí³ÌÐòÀ´²Â²â±àÂë²¢ÕýÈ·µØ½«Æäת»»ÎªUnicode¡£Ó¡Ë¢£ºAngstrom¡£?¾ÓªÄãµÄÉúÒâ¡£Ò»µ©½«Ä¬ÈϱàÂëÉèÖÃΪutf-8£¬´úÂ뽫·¢ÏÖ×Ö½Ú_×Ö·û´®¿ÉÒÔ±»½âÊÍΪutf-8£¬Òò´ËËü»áËð»µÊý¾Ý²¢·µ»ØÒÔÏÂÄÚÈÝ£ºAngstrom(?)ÔËÐÐÄúµÄÒµÎñ...
Õ¹¿ªÏêÇë
ÔÞ
0
ÊÕ²Ø
0
ÆÀÂÛ
0
·ÖÏí
TL£»DR ´ð°¸ÊǾø²»¿ÉÄÜ(³ý·ÇÄãÕæµÄÖªµÀ×Ô¼ºÔÚ×öʲô) 9/10±¶µÄ½â¾ö·½°¸¿ÉÒÔͨ¹ýÕýÈ·Àí½â±àÂë/½âÂëÀ´½â¾ö¡£ 1/10ÈËÓдíÎó¶¨ÒåµÄµØµã»ò»·¾³£¬ÐèÒªÉèÖ㺠PYTHONIOENCODING="UTF-8" ÔÚËûÃǵĻ·¾³ÖÐÐÞ¸´¿ØÖÆ̨´òÓ¡ÎÊÌâ¡£ ÊǸÉʲôµÄÄØ£¿ sys.setdefaultencoding("utf-8")(ΪÁ˱ÜÃâÖظ´Ê¹ÓÃ)ÿµ±Python2.xÐèÒª½«Unicode()ת»»Îªstr()(·´Ö®ÒàÈ»)ʱ£¬¾Í»á¸ü¸ÄĬÈϵıàÂë/½âÂ룬²¢ÇÒ²»»á¸ø³ö±àÂë¡£¼´£º str(u"\u20AC") unicode("€") "{}".format(u"\u20AC") ÔÚPython2.xÖУ¬Ä¬ÈϱàÂëÉèÖÃΪASCII£¬ÉÏÊöʾÀý½«Ê§°Ü£º UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128) (ÎҵĿØÖÆ̨ÅäÖÃΪUTF-8£¬ËùÒÔ"€" = '\xe2\x82\xac'£¬Òò´ËÔÚ\xe2) »ò UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 0: ordinal not in range(128) sys.setdefaultencoding("utf-8")½«ÔÊÐíÕâЩ¹¤×÷ÎÒ£¬µ«²»Ò»¶¨ÊÊÓÃÓÚ²»Ê¹ÓÃUTF-8µÄÈË¡£asciµÄĬÈÏÉèÖÃÈ·±£±àÂëµÄ¼ÙÉè²»±»Ð´Èë´úÂëÖС£ ¿ØÖÆ̨ sys.setdefaultencoding("utf-8")Ò²ÓÐÒ»¸ö¸±×÷Óã¬ËƺõÐÞ¸´sys.stdout.encoding£¬µ±½«×Ö·û´òÓ¡µ½¿ØÖÆ̨ʱʹÓá£PythonʹÓÃÓû§µÄµØÇø(Linux/OSX/un)*(X)»ò´úÂëÒ³(Windows)ÉèÖôËÖµ¡£Å¼¶û£¬Óû§µÄÇøÓòÉèÖûáÖжϣ¬Ö»ÐèÒªPYTHONIOENCODINGÈôÒªÐÞ¸´¿ØÖÆ̨±àÂë¡£ Àý×Ó£º $ export LANG=en_GB.gibberish $ python >>> import sys >>> sys.stdout.encoding 'ANSI_X3.4-1968' >>> print u"\u20AC" Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 0: ordinal not in range(128) >>> exit() $ PYTHONIOENCODING=UTF-8 python >>> import sys >>> sys.stdout.encoding 'UTF-8' >>> print u"\u20AC" € ÓÐʲô²»ºÃµÄsys.setdefaultencode(¡°utf-8¡±)? 16ÄêÀ´£¬ÈËÃÇÒ»Ö±ÔÚʹÓÃPython2.x½øÐпª·¢£¬ÈËÃǵÄÀí½âÊÇĬÈϵıàÂëÊÇASCII¡£UnicodeErrorÒѾ±àдÁËÒì³£´¦Àí·½·¨À´´¦Àí×Ö·û´®µ½UnicodeµÄת»»£¬ÕâЩ×Ö·û´®±»·¢ÏÖ°üº¬·ÇASCII¡£ def welcome_message(byte_string): try: return u"%s runs your business" % byte_string except UnicodeError: return u"%s runs your business" % unicode(byte_string, encoding=detect_encoding(byte_string)) print(welcome_message(u"Angstrom (??)".encode("latin-1")) ÔÚÉèÖÃĬÈϱàÂë֮ǰ£¬Õâ¶Î´úÂ뽫ÎÞ·¨½âÂëascii±àÂëÖеġ°oi¡±£¬È»ºóÊäÈëÒì³£´¦Àí³ÌÐòÀ´²Â²â±àÂë²¢ÕýÈ·µØ½«Æäת»»ÎªUnicode¡£Ó¡Ë¢£ºAngstrom¡£?¾ÓªÄãµÄÉúÒâ¡£Ò»µ©½«Ä¬ÈϱàÂëÉèÖÃΪutf-8£¬´úÂ뽫·¢ÏÖ×Ö½Ú_×Ö·û´®¿ÉÒÔ±»½âÊÍΪutf-8£¬Òò´ËËü»áËð»µÊý¾Ý²¢·µ»ØÒÔÏÂÄÚÈÝ£ºAngstrom(?)ÔËÐÐÄúµÄÒµÎñ
½ûÓÃÊä³ö»º³å£¿
2
»Ø´ð
stdout
¡¢
sys
¡¢
±à³Ì
¡¢
¶ÔÏó
¡¢
ÃüÁîÐÐ
ÐÄÔ¸
Êǵġ£ Äã¿ÉÒÔͨ¹ý¡°-u¡±¿ª¹ØÔÚÃüÁîÐÐÉϽûÓÃËü¡£ »òÕߣ¬Äã¿ÉÒÔÔÚÿ´ÎдÈëʱÔÚsys.stdoutÉϵ÷ÓÃ.flush£¨£©£¨»òÕßÓÃ×Ô¶¯Ö´Ðд˲Ù×÷µÄ¶ÔÏó°ü×°Ëü£©...
Õ¹¿ªÏêÇë
ÔÞ
0
ÊÕ²Ø
0
ÆÀÂÛ
0
·ÖÏí
Êǵġ£ Äã¿ÉÒÔͨ¹ý¡°-u¡±¿ª¹ØÔÚÃüÁîÐÐÉϽûÓÃËü¡£ »òÕߣ¬Äã¿ÉÒÔÔÚÿ´ÎдÈëʱÔÚsys.stdoutÉϵ÷ÓÃ.flush£¨£©£¨»òÕßÓÃ×Ô¶¯Ö´Ðд˲Ù×÷µÄ¶ÔÏó°ü×°Ëü£©
Ïà¹Ø
²úÆ·
ÈÈÃÅ
רÀ¸
python3
11.9K ÎÄÕÂ
239 ¶©ÔÄ
ȫ־ǶÈëʽÄÇЩÊÂ
461 ÎÄÕÂ
33 ¶©ÔÄ
sktj
1.5K ÎÄÕÂ
34 ¶©ÔÄ
linuxÇý¶¯¸öÈËѧϰ
724 ÎÄÕÂ
185 ¶©ÔÄ
СÂóÃçµÄDB±¦×¨À¸
927 ÎÄÕÂ
106 ¶©ÔÄ
Áìȯ
http://www.vxiaotou.com