繁体   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