当前位置: 首页 > 面试题库 >

Python:在Windows终端中使用unicode,使用编码吗?

华恩
2023-03-14
问题内容

我在Windows 7终端中使用Python解释器。
我试图围绕unicode和编码。

我输入:

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

问题1 :为什么字符串中使用的编码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'

Question2
:我latin-1很幸运地尝试使用编码将字符串转换为unicode字符串(实际上,我首先尝试了一堆其他字符串,包括utf-8)。如何找出终端使用哪种编码来编码我的字符串?

问题3 :如何才能让终端打印 ëë,而不是 '\x89'u'xeb'嗯,愚蠢的我。print(s)做这份工作。

我已经看过这个相关的SO问题,但是那里没有任何线索:在Windows上设置Python终端编码


问题答案:

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'

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



 类似资料:
  • Windows中使用的默认unicode字符编码是什么?特别是在Windows编程中(Win32和WinRT)。当我在WinAPI中编程时,“char”映射到1字节字符存储,“wchar_t”映射到2字节字符存储。如果UTF-16用4个字节编码所有超过65536的字符,那么Windows如何将这些字符映射为“wchar_t”数据类型?我知道我的问题不够清楚,但我希望你能理解我的一些担忧。非常感谢!

  • 本文向大家介绍详解Python2.x中对Unicode编码的使用,包括了详解Python2.x中对Unicode编码的使用的使用技巧和注意事项,需要的朋友参考一下 我确定有很多关于Unicode和Python的说明,但为了方便自己的理解使用,我还是打算再写一些关于它们的东西。   字节流 vs Unicode对象 我们先来用Python定义一个字符串。当你使用string类型时,实际上会储存一个字

  • 问题内容: 好的,我一直在研究如何执行此操作,但是说我正在运行一个程序,该程序在终端上有很多输出,如何清除程序中的屏幕以使程序保持运行状态? 我知道我可以只输入终端,然后将其清除就可以了,但是就像我说的那样,对于这个程序,这对我来说会更有利。 我找到了可行的方法,但是我不确定它是什么或正在做什么。 那行得通,但是我不知道它是什么,如果您能解释一下,我将不胜感激。 问题答案: 这些是ANSI转义码。

  • 我在mac上使用终端安装了matplotlib,并成功安装。但是,当我尝试导入matplotlib时,它会产生ModuleNot找到错误。以下是我的代码和错误信息。 终端: 查看索引:https://pypi.doubanio.com/simple 需求已经更新:matplotlib in/Users/zbao/.local/share/virtualenvs/myProject opsBTjit

  • 问题内容: 考虑: 如何在源代码中声明UTF-8字符串? 问题答案: 在源头中,你可以声明: 在PEP 0263中进行了描述: 然后,你可以在字符串中使用UTF-8: 在Python 3中不需要此声明,因为UTF-8是默认的源编码(请参阅PEP 3120)。 此外,值得验证你的文本编辑器是否已将代码正确编码为UTF-8。否则,你可能会有不被解释为UTF-8的不可见字符。

  • 编程语言在处理非拉丁字符时候有一个问题,带重音符号的字符有多种编码方式。比如, 字母é,有两种编码:一个单字符é(Unicode的LATIN SMALL LETTER E WITH ACUTE (带有尖标的小写拉丁字母E))和字母e后跟上音标́的组合(COMBINING ACUTE ACCENT (组合尖音标))。为了解决这个问题,就有了normalization(标准化),一种让"相同的字符串有