我正在开发一个使用utf-8编码的应用程序。为了调试,我需要打印文本。如果我直接将print()
与包含我的unicode字符串的变量ex-print(pred_str)
一起使用。在
我得到这个错误:
UnicodeEncodeError: 'charmap' codec can't encode character '\ufeff' in position 0: character maps to
所以我尝试了print(pred_str.encode('utf-8'))
,结果如下:
b'\xef\xbb\xbfpudgala-dharma-nair\xc4\x81tmyayo\xe1\xb8\xa5 apratipanna-vipratipann\xc4\x81n\xc4\x81m'
b'avipar\xc4\xabta-pudgala-dharma-nair\xc4\x81tmya-pratip\xc4\x81dana-artham'
b'tri\xe1\xb9\x83\xc5\x9bik\xc4\x81-vij\xc3\xb1apti-prakara\xe1\xb9\x87a-\xc4\x81rambha\xe1\xb8\xa5'
b'pudgala-dharma-nair\xc4\x81tmya-pratip\xc4\x81danam punar kle\xc5\x9ba-j\xc3\xb1eya-\xc4\x81vara\xe1\xb9\x87a-prah\xc4\x81\xe1\xb9\x87a-artham'
但是,我希望我的输出是这样的:
pudgala-dharma-nairātmyayoḥ apratipanna-vipratipannānām
aviparīta-pudgala-dharma-nairātmya-pratipādana-artham
triṃśikā-vijñapti-prakaraṇa-ārambhaḥ
pudgala-dharma-nairātmya-pratipādanam punar kleśa-jñeya-āvaraṇa-prahāṇa-artham
如果我使用以下命令将字符串保存在文件中:
with codecs.open('out.txt', 'w', 'UTF-8') as f:
f.write(pred_str)
它按预期保存字符串。在
请尝试以下代码:
您的数据是用“UTF-8-SIG”编解码器编码的,这种编解码器有时在Microsoft环境中使用。在
这种UTF-8的变体在编码文本的前缀加上byte order mark
'\xef\xbb\xbf'
,使应用程序更容易检测UTF-8编码文本与其他编码。在你可以这样解码bytestrings:
从文件中读取这些数据:
^{pr2}$请注意,即使从UTF-8-SIG解码后,您仍可能无法打印数据,因为您的控制台的默认代码页可能无法对数据中的其他非ascii字符进行编码。在这种情况下,您需要adjust your console settings来支持UTF-8。在
相关问题 更多 >
编程相关推荐