gpt4 book ai didi

python:Windows终端中的unicode,使用的编码?

转载 作者:太空狗 更新时间:2023-10-29 21:15:44 28 4
gpt4 key购买 nike

我在 Windows 7 终端中使用 Python 解释器。
我正在努力思考 unicode 和编码。

我输入:

>>> s='ë'
>>> s
'\x89'
>>> u=u'ë'
>>> u
u'\xeb'

问题一:为什么字符串s和unicode字符串u使用的编码不同?

我继续,然后输入:

>>> us=unicode(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 0: ordinal
not in range(128)
>>> us=unicode(s, 'latin-1')
>>> us
u'\x89'

问题2:运气好我尝试使用latin-1编码将字符串变成unicode字符串(实际上,我先尝试了一堆其他的,包括 utf-8)。我如何找出终端使用哪种编码对我的字符串进行编码?

问题 3:如何让终端将 ë 打印为 ë 而不是 '\x89'u'xeb'? 嗯,愚蠢的我。 print(s) 完成这项工作。

我已经看过这个相关的 SO 问题,但没有任何线索:Set Python terminal encoding on Windows

最佳答案

Unicode 不是一种编码。您编码成字节字符串并解码成 Unicode:

>>> '\x89'.decode('cp437')
u'\xeb'
>>> u'\xeb'.encode('cp437')
'\x89'
>>> u'\xeb'.encode('utf8')
'\xc3\xab'

Windows 终端使用 DOS 的遗留代码页。对于美国 Windows,它是:

>>> import sys
>>> sys.stdout.encoding
'cp437'

Windows 应用程序使用 Windows 代码页。 Python 的 IDLE 将显示 windows 编码:

>>> import sys
>>> sys.stdout.encoding
'cp1252'

您的结果可能会有所不同。

关于python:Windows终端中的unicode,使用的编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344853/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com