Printing 如何使python 3打印(';\ufeff';)

Printing 如何使python 3打印(';\ufeff';),printing,python-3.x,Printing,Python 3.x,或 但时间太长了,我还能简单地完成它吗 英语真难写,有木有?这坛子有国人么?帮老弟一帮啊。。 您似乎试图将Unicode字符打印到不支持该字符的终端。这样做基本上是不可能的。也可能是所讨论的字符应该是GBK编码的一部分,但是Python实现有一个bug 第一个使用gb2312打开标准输出的解决方案表明,只要更改字符的编码,终端本身就支持该字符。作为操作系统中的一种设置,这应该是可行的。这可能是你最好的解决办法。如果可以,则切换到UTF-8或UTF-16。它们应该支持所有Unicode字符 否则,

但时间太长了,我还能简单地完成它吗


英语真难写,有木有?这坛子有国人么?帮老弟一帮啊。。

您似乎试图将Unicode字符打印到不支持该字符的终端。这样做基本上是不可能的。也可能是所讨论的字符应该是GBK编码的一部分,但是Python实现有一个bug

第一个使用gb2312打开标准输出的解决方案表明,只要更改字符的编码,终端本身就支持该字符。作为操作系统中的一种设置,这应该是可行的。这可能是你最好的解决办法。如果可以,则切换到UTF-8或UTF-16。它们应该支持所有Unicode字符


否则,您所能做的就是在打印字符之前尝试将其过滤掉,或者使用
errors='ignore'
errors='replace'

将其编码为具有特殊含义的不可打印Unicode字符。当使用两个字节整数时,它用作UTF-16 BOM(字节顺序标记),以检测存储在内存中的字节顺序(稍后写入文件)。当在文件开头找到时,它应该只帮助检测硬件存储小整数的方式,然后应该忽略它


查看更多详细信息。

哦,现在我注意到第二个示例中的“errors='ignore'”。这是区别,而不是编码。哦!实际上,问题是文件是否存储在UTF-16中。如果是,则不应使用
encoding='gb2312'
打开文件。另一个问题是,控制台可能无法将Unicode字符串转换为控制台编码。另外,
repr(unicodestr)
在Python3中不会将非ASCII字符转换为ASCII序列(Python2会这样做)。需要时,使用
ascii()
函数获取转义序列。
>>> 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'