我想知道如何确定unicode的编码。
我知道我在某个地方读过这篇文章,我只是不记得这是否可能,但我想相信有一种方法。
假设我有一个拉丁文1编码的unicode,我想用解码时使用的相同的编码动态地对它进行编码.
坦率地说,我想把它变成一个utf-8 unicode,而不会在使用它之前弄乱字符。
即:
latin1_unicode = 'åäö'.decode('latin-1')
utf8_unicode = latin.encode('latin-1').decode('utf-8')发布于 2012-01-26 11:08:16
如果在“确定unicode的编码”中,“unicode”是python数据类型,那么您就不能这样做,因为“编码”指的是在输入字符串时表示字符串的原始字节模式(例如,从文件、数据库读取,您可以给它命名)。当它成为python 'unicode‘类型(内部表示)时,字符串要么已被解码到行后,要么已经抛出解码异常,因为字节序列没有与系统编码结合。
Shadyabhi的答案指的是(常见的)情况,在这种情况下,您正在从一个文件中读取字节(您很可能正在字符串中填充字节,而不是python字符串),需要猜测它们保存在哪个编码中。严格地说,不能有"latin1 unicode python“:unicode python字符串没有编码(编码可以定义为将字符转换为字节模式的过程,解码为逆过程;解码后的字符串因此没有编码-尽管可以通过多种方式对其进行编码以实现存储/外部表示)。
例如,在我的机器上:
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'\xc3\xa8'
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将包含垃圾。
所以你(可能)想做的是:
https://stackoverflow.com/questions/9016628
复制相似问题