簡體   English   中英

如何制作python 3 print('\\ ufeff')

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM