Windows cmd編碼更改導(dǎo)致Python崩潰首先,我將Windows CMD編碼更改為utf-8并運(yùn)行Python解釋器:chcp 65001python然后我嘗試在其中打印一個(gè)unicode sting,當(dāng)我這樣做時(shí),Python以一種特殊的方式崩潰(我只是在同一個(gè)窗口中得到一個(gè)cmd提示符)。>>> import sys>>> print u'?è??e'.encode(sys.stdin.encoding)任何想法為什么會(huì)發(fā)生以及如何使它工作?UPD:sys.stdin.encoding退貨'cp65001'UPD2:我剛才發(fā)現(xiàn)這個(gè)問題可能與utf-8使用多字節(jié)字符集這一事實(shí)有關(guān)(kcwu就此提出了一個(gè)很好的觀點(diǎn))。我嘗試使用'windows-1250'運(yùn)行整個(gè)示例并得到'?ea?'。Windows-1250使用單字符集,因此它適用于它理解的字符。但是我仍然不知道如何讓'utf-8'在這里工作。UPD3:哦,我發(fā)現(xiàn)它是一個(gè)已知的Python bug。我想會(huì)發(fā)生的事情是Python將cmd編碼復(fù)制為'cp65001到sys.stdin.encoding并嘗試將其應(yīng)用于所有輸入。由于它無法理解'cp65001',因此它會(huì)在包含非ascii字符的任何輸入上崩潰。
添加回答
舉報(bào)
0/150
提交
取消