[英]How to make python 3 print('\ufeff')
>>> print('\ufeff')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'gbk' codec can't encode character '\ufeff' in position 0: illegal multibyte sequence
我知道
>>> stdout = open(1, 'w', encoding='gb2312', errors='ignore')
>>> print('\ufeff', file=stdout)
要么
>>> print(repr('\ufeff'))
'\ufeff'
但是太長了,還有什么我可以簡單完成的
英語真難寫,有木有?這壇子有國人么?幫老弟一幫啊。。
'\\ ufeff'是不可打印的Unicode字符,具有特殊含義。 當使用兩個字節的整數時,它用作UTF-16 BOM(字節順序標記)來檢測存儲在內存中的字節順序(后來寫入文件)。 在文件開頭找到該文件時,它僅應有助於檢測硬件存儲小整數的方式,然后應將其忽略。
有關更多詳細信息,請訪問http://en.wikipedia.org/wiki/Byte_order_mark 。
您似乎正在嘗試將Unicode字符打印到不支持該字符的終端。 這樣做基本上是不可能的。 也可能是所討論的字符應該是GBK編碼的一部分,但是Python實現存在一個錯誤。
在第一個使用gb2312打開stdout的解決方案中,如果您只是更改字符的編碼,則表明終端本身確實支持該字符。 作為操作系統中的設置,應該可以做到這一點。 這可能是最適合您的解決方案。 如果可以,請切換到UTF-8或UTF-16。 它們應支持所有Unicode字符。
否則,您所能做的就是嘗試在打印之前從打印內容中過濾出字符,或者使用errors='ignore'
或errors='replace'
其編碼為二進制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.