Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù

#sys

k8s»·¾³È±ÉÙcpu.weight£¿

´óÉñ°ï¿´Ò»Ï£¿

ΪʲôÎÒÃDz»Ó¦¸ÃÔÚpy½Å±¾ÖÐʹÓÃsys.setdefaultencode(¡°utf-8¡±)£¿

ÏôÓêÄÁ¸è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(?)ÔËÐÐÄúµÄÒµÎñ... Õ¹¿ªÏêÇë
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(?)ÔËÐÐÄúµÄÒµÎñ

½ûÓÃÊä³ö»º³å£¿

Êǵġ£ Äã¿ÉÒÔͨ¹ý¡°-u¡±¿ª¹ØÔÚÃüÁîÐÐÉϽûÓÃËü¡£ »òÕߣ¬Äã¿ÉÒÔÔÚÿ´ÎдÈëʱÔÚsys.stdoutÉϵ÷ÓÃ.flush£¨£©£¨»òÕßÓÃ×Ô¶¯Ö´Ðд˲Ù×÷µÄ¶ÔÏó°ü×°Ëü£©... Õ¹¿ªÏêÇë
Áìȯ
http://www.vxiaotou.com