加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

什么是在python中确定unicode字符串的解码方法的最佳方法

发布时间:2020-12-20 13:26:13 所属栏目:Python 来源:网络整理
导读:我想知道如何确定unicode的编码. 我知道我已经在某个地方读过这个,我只是不记得是否可能,但我想相信有办法. 假设我有一个带有latin-1编码的unicode,我想用解码时使用的相同编码动态编码它… 坦率地说,我想把它变成一个utf-8 unicode而不会弄乱角色,然后才能
我想知道如何确定unicode的编码.

我知道我已经在某个地方读过这个,我只是不记得是否可能,但我想相信有办法.

假设我有一个带有latin-1编码的unicode,我想用解码时使用的相同编码动态编码它…

坦率地说,我想把它变成一个utf-8 unicode而不会弄乱角色,然后才能使用它.

即:

latin1_unicode = '???'.decode('latin-1')
utf8_unicode = latin.encode('latin-1').decode('utf-8')

解决方法

如果在“确定unicode的编码”中,“unicode”是python数据类型,那么就不能这样做,因为“encoding”是指在输入时表示字符串的原始字节模式(例如,从一个文件,一个数据库,你的名字).当它变成python’unicode’类型(内部表示)时,字符串要么在行后面解码,要么抛出解码异常,因为字节序列与系统编码不相符.

Shadyabhi的答案指的是你从文件中读取字节的(常见)情况(你可能很好地填充字符串 – 而不是python unicode字符串)并且需要猜测它们保存的编码.严格来说,你不能拥有“latin1 unicode python string”:unicode python字符串没有编码(编码可以定义为将字符转换为字节模式并解码为反向过程的过程;解码后的sring因此没有编码 – 尽管它可以以多种方式编码以用于存储/外部表示目的).

例如在我的机器上:

In [35]: sys.stdin.encoding
Out[35]: 'UTF-8'

In [36]: a='è'.decode('UTF-8')

In [37]: b='è'.decode('latin-1')

In [38]: a
Out[38]: u'xe8'

In [39]: b
Out[39]: u'xc3xa8'
In [41]: sys.stdout.encoding
Out[41]: 'UTF-8'

In [42]: print b #it's garbage
?¨

In [43]: print a #it's OK
è

这意味着,在您的示例中,如果默认编码恰好是UTF-8或UTF-16,或者与latin1不同的任何内容,则latin1_unicode将包含垃圾.

所以你(可能)想要做的是:

>确定数据源的编码 – 可能使用Shadyabhi的方法之一>根据(1)解码数据,将其保存在python unicode字符串中>使用原始编码(如果符合您的需要)或您选择的其他编码对其进行编码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读