0
>>> 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'

しかし長すぎる,他に何があれば簡単に終わらせることができますか

英语真难写,有木有?

4

2 に答える 2

1

「\ufeff」は、特別な意味を持つ印刷できない Unicode 文字です。これは、2 バイト整数が使用されている場合に、メモリに格納されている (後でファイルに書き込まれる) バイトの順序を検出するための UTF-16 BOM (バイト オーダー マーク) として使用されます。ファイルの先頭にある場合は、ハードウェアが小さい整数を格納する方法を検出するのに役立つだけであり、無視する必要があります。

詳細については、http://en.wikipedia.org/wiki/Byte_order_markをご覧ください。

于 2012-05-07T21:39:33.193 に答える
0

その文字をサポートしていない端末に Unicode 文字を出力しようとしているようです。そうすることは本質的に不可能です。また、問題の文字は GBK エンコーディングの一部である必要がありますが、Python の実装にバグがある可能性もあります。

gb2312 を使用して stdout を開く最初のソリューションは、エンコーディングを変更するだけで端末自体が文字をサポートすることを示しています。これは、オペレーティング システムの設定として何とか実行できるはずです。それがおそらくあなたにとって最良の解決策です。可能であれば、UTF-8 または UTF-16 に切り替えてください。すべての Unicode 文字をサポートする必要があります。

それ以外の場合は、印刷する前に印刷するものから文字を除外するか、 または を使用してバイナリにエンコードすることしかできませerrors='ignore'errors='replace'

于 2012-05-07T13:17:07.837 に答える