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