我有两个变量(假设x
和y
)具有以下值:
x = u'Ko\u0161ick\xfd'
y = 'Ko\x9aick\xfd'
它们可以用不同的方式编码相同的名称。第一个变量是unicode,第二个变量是字符串。在
有没有一种方法可以将字符串转换成unicode(或unicode转换成string)并检查它们是否真的相同。在
我尝试使用encode
它返回新的内容(第三个版本):
'Ko\xc5\xa1ick\xc3\xbd'
并使用以下方法:
print x.encode('utf-8')
返回另一个版本:
KošickÛ
所以,我完全糊涂了。有没有办法让所有的东西都保持相同的格式?在
可以将字节字符串转换为Unicode,但如果它包含任何非ASCII字符,则必须指定编码。在
对于给定的示例,这是不正确的;但可能
y
使用了不同的编码。在从理论上讲,您可以采用任何一种方式进行转换,但通常情况下,在内部使用所有Unicode,并将其他编码转换为Unicode以便在您的代码中使用(而不是相反)。在
你需要知道字节串的编码。它看起来像
windows-1252
:输出:
^{pr2}$最佳实践是在输入到程序时将文本转换为Unicode,用Unicode进行所有处理,并将其转换回编码字节以持久存储,在套接字上传输等
好吧,utf-8现在是交换和Linux世界中事实上的标准,但是还有很多其他编码。在
常见的例子有latin1、latin9(与欧元符号相同)和cp1252(它们的windows变体)。在
在您的情况下:
因此
y
字符串似乎是cp1252
编码的。在相关问题 更多 >
编程相关推荐