如何将python2.6项目迁移到UTF8?

2024-09-28 21:20:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我们正在从latin1迁移到UTF-8,有10万行python代码。在

另外,我是python新手(哈哈哈!)。在

我已经知道str()函数在接收Unicode时失败,所以我们应该使用unicode()来代替它,效果几乎相同。在

还有哪些“危险”的代码?在

有没有什么基本的指导方针/算法可以移植到UTF-8?它能写一个自动的“代码转换器”吗?在


Tags: 函数代码算法unicodeutf效果新手str
3条回答

strunicode是类,不是函数。当您调用str(u'abcd')时,您正在初始化一个新字符串,该字符串将“abcd”作为变量。恰好str()可用于将任何类型的字符串转换为ascii str。在

其他需要注意的地方是从文件/输入中读取时,或者基本上从不是为unicode编写的函数中以字符串形式返回的任何内容。在

享受:)

将python2.x快速转换为默认编码UTF-8的一种方法是set the default encoding。这种方法的缺点主要是它改变了所有库和应用程序的编码,因此请谨慎使用。我的公司在我们的产品应用程序中使用了这种技术,非常适合我们。它还与python3向前兼容,python3的默认编码是UTF-8。您仍然需要将str()的引用更改为unicode(),但不必显式地使用.decode()和{}指定编码。在

Can it be written an automatic 'code transformer'? =)

No.str和{}是两种不同的类型,它们有不同的用途。在python2和python3中,不应该尝试用Unicode字符串替换每次出现的字节字符串。在

继续对二进制数据使用字节字符串。尤其是你要写入文件或网络套接字的任何内容都是字节。并对面向用户的文本使用Unicode字符串。在

在两者之间有一个灰色区域,内部ASCII字符串可以是字节或Unicode。在python2中这些通常是字节,在python3中通常是Unicode。在您乐于将代码限制为Python2.6+中,您可以将绝对字节字符串标记为b''和{},绝对字符字符串为u''unicode,并使用''和{}作为“字符串的默认类型是什么”字符串。在

相关问题 更多 >