您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python UnicodeDecodeError-我是否误解了编码?

Python UnicodeDecodeError-我是否误解了编码?

…有一个被称为“编码”的原因…

一些前言:将unicode视为规范或理想状态。Unicode只是一个字符表。№65是拉丁首都A。№937是希腊首都欧米茄。只是。

为了使计算机存储和/或操作Unicode,它必须将其 编码 为字节。Unicode最直接的 编码 是UCS-4。每个字符占用4个字节,并且所有?1000000个字符都可用。4个字节包含Unicode表中的字符数,为4个字节的整数。另一个非常有用的编码是UTF-8,它可以编码任何带有1-4个字节的Unicode字符。但是也有一些有限的编码,例如“ latin1”,其中包含的字符范围非常有限,主要由西方国家使用。这样的 编码 每个字符仅使用一个字节。

基本上,Unicode的可以 编码 与许多编码和编码的字符串可以被 解码 为Unicode。事实是,Unicode来得太晚了,所以我们每个成长为使用8位 字符集的人都 为时已晚,以至于我们一直都在使用 编码 字符串。编码可以是ISO8859-1,Windows CP437或CP850,或者是或或,这取决于我们的系统认值。

因此,当您在源代码中输入字符串“将“监视”添加到列表”(我想您想将字符串“将监视”添加到列表”,请注意第二个引号)时,实际上您已经在使用一个字符串 编码 根据系统的代码页(通过X93我假设你使用的是Windows代码页1252,“西方”的字节\)。如果要从中获取Unicode,则需要从“ cp1252”编码中 解码 字符串。

因此,您想做的是:

"add \x93Monitoring\x94 to list".decode("cp1252", "ignore")

不幸的是,Python 2.x也包含.encode用于字符串的方法。这是用于“特殊”编码的便捷功能,例如“ zip”或“ rot13”或“ base64”,与Unicode无关。

无论如何,对于往返Unicode转换,您只需要记住以下几点:

在这两种情况下,您都需要指定将要使用的 编码

我不是很清楚,我很困,但是我希望能有所帮助。

PS:一个的旁注:玛雅人没有Unicode。古罗马人,古希腊人,古埃及人也没有。他们都有自己的“编码”,对其他文化几乎没有尊重。所有这些文明都崩溃了。想想人!使您的应用程序具有Unicode意识,造福全人类。:)

PS2请不要通过说“但是中国人……”破坏先前的信息。但是,如果您倾向于这样做或有义务这样做,则可以通过认为Unicode BMP主要由中文表意文字填充来推迟它,那么ergo Chinese是Unicode的基础。只要人们开发支持Unicode的应用程序,我就可以继续发明令人毛骨悚然的谎言。干杯!

python 2022/1/1 18:38:41 有240人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶