Python 2字符串以某种方式保存为纯Unicode

时间:2018-04-10 14:37:03

标签: python unicode encoding utf-8

我有以下中文字符串,以下列格式保存为“str”类型: $query = "INSERT INTO customer (firstname, lastname, email_address, phone_num, acc_password, weddingdate) VALUES( '" . $firstname . "', '" . $lastname . "', '" . $email_address . "', '" . $phone_num . "', '" . $acc_password . "', '" . $weddingdate . "')"; \u72ec\u5230

我在Python 2.7上,当我打印这些字符串时,它们被打印为实际的中文字符:

\u7528\u8272

我无法弄清楚它们是如何以这种形式保存的,对我来说它看起来像Unicode。我们的目标是获取我拥有的其他中文字符,并将它们保存在同一种编码中。假设我有“国道”,我需要以与原始chinese_list = ["\u72ec\u5230", "\u7528\u8272", "\u72ec"] print(chinese_list[0], chinese_list[1], chinese_list[2]) >>> 独到 用色 独 相同的方式保存它们。

我尝试将其编码为utf-8以及其他编码,但我从未获得与原始编码相同的输出:

chinese_list

任何帮助表示赞赏!

编辑:它不必有2个汉字。

EDIT2:显然,编码是new_string = u"国道" print(new_string.encode("utf-8")) # >>> b'\xe5\x9b\xbd\xe9\x81\x93' print(new_string.encode("utf-16")) # >>> b'\xff\xfe\xfdVS\x90' 。谢谢@deceze。

unicode-escape

1 个答案:

答案 0 :(得分:1)

\u....是unicode转义语法。它与\n是换行符的方式类似,而不是两个字符\n

列表从不的元素实际上包含字面字符串,其字面字符为\u7,依此类推。它们包含带有实际unicode字符的unicode字符串,即,依此类推。 请注意,这仅适用于unicode字符串!在Python2中,您需要编写u"\u...."。 Python3总是使用unicode字符串。

可以使用ord内置函数获取角色的unicode转义值。例如,ord(u"国")给出22269 - 与0x56fd相同的值。 要获取十六进制转义值,请将结果转换为十六进制。

>>> def escape_literal(character):
...     return r'\u' + hex(ord(character))[2:]
...
>>> print(escape_literal('国'))
\u56fd