hjg.baidu/?fygh
方法的參數類型是str,str是二進制流(不包含編碼信息),當妳給出壹個unicode對象時,會執行str函數轉換成str類型再送給write方法。unicode轉str包含壹次編碼,如不指定則默認使用ascii編碼,而ascii編碼集裏漢字字符是沒有對應的,所以報錯。
然後代碼首行的編碼標記是用來告訴解釋器這個程序的源代碼是用什麽編碼存的。
正確姿勢是在代碼裏指定編碼。比如在open裏指定,或者在write的時候手動把unicode對象通過encode方法指定編碼產生str。就是說寫成fp.write(s.encode('utf8'))。註意unicode對象用encode是有意義的,str對象在py2裏允許妳對str對象使用encode,然而這是對指定了default encoding的情況下才有效的,因此不推薦新手對str直接encode。