Python:编码后立即解码

标签 python unicode

在遗留中发现:

somevar.encode('utf-8').decode('utf-8')

当我们试图捕获编码错误时,我们能发现这种构造有用吗?

最佳答案

Python 2.7.6 解释器中的实验:

a = u"string"
a

输出:u'字符串'

b = a.encode('utf-8').decode('utf-8')
b

输出:u'字符串'

b = a.decode('utf-8').encode('utf-8')
b

输出:'字符串'

a = "string"
a  

输出:'字符串'

b = a.encode('utf-8').decode('utf-8')
b

输出:u'字符串'

b = a.decode('utf-8').encode('utf-8')
b

输出:'字符串'

注意,无论原始字符串是否为 Unicode,encode -> Decode 的输出都将是 Unicode 字符串。解码 ->编码的输出将不是unicode字符串。不过,需要注意的是,由于字符串是不可变的,因此您发布的代码行除了检查 UnicodeError 之外没有任何用处,因为它无法捕获函数调用的返回值。

编码 -> 解码构造的唯一实际效果是通过它(并从返回中捕获)的所有字符串都将是 Unicode 字符串。为什么你想要这样做而不是 unicode_string = unicode(normal_string,encoding='UTF-8') 我不知道。

关于Python:编码后立即解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24759250/

相关文章:

python - 如何在Python中重新调整箱线图的y轴

python - 收集pyHook 找不到满足pyHook要求的版本

python - Djangosyncdb 对 unicode 字符串的行为异常

python - 从列表中搜索并替换字符串中的字符

python - 为什么我的按钮的命令在我创建按钮时立即执行,而不是在我单击它时执行?

python - python多久刷新一次文件?

mysql - 如何在 MySQL 中查询包含亚洲语言字符的文本?

pdf - 在 PDF 文档中搜索希腊字符

Java将unicode代码点转换为字符串

Java - 将unicode撇号分配给char