Python unicode vs utf-8

时间:2016-01-26 18:52:34

标签: python unicode utf-8 repr

我正在构建一个字符串查询(cypher query)来对数据库(Neo4J)执行它。

我需要连接一些字符串,但我遇到编码问题。 我正在尝试构建一个unicode字符串。

# -*- coding: utf-8 -*-
value = u"D'Santana Carlos Lãnez"
key = u"Name"
line =  key + u" = "+ repr(value)
print line.encode("utf-8")

我希望有:

  

姓名=“D'SantanaCarlosLãnez”

但我得到了:

  

姓名= u“D'Santana Carlos L \ xe3nez”

我想repr正在返回一个unicode。或者我可能没有使用正确的功能。

3 个答案:

答案 0 :(得分:1)

value已经是unicode,因为您在u中使用了前缀u"...",因此您不需要repr()(以及unicode()或{{1 }})

decode()之外没有转换为unicode。但它返回字符串对于debuging非常有用 - 它显示了本机字符和其他东西的十六进制代码。

答案 1 :(得分:1)

value = u"D'Santana Carlos Lãnez"
key = u"Name"
line = key + u" = "+ value
print(line)

答案 2 :(得分:1)

Python文字(repr)语法不是Cypher字符串文字语法的有效替代品。领先u只是它们之间的差异之一;值得注意的是,Cypher字符串文字没有\x转义符,Python将用于U + 0080-U + 00FF之间的字符。

如果需要从Python字符串创建Cypher字符串文字,则需要编写自己的字符串转义函数,以编写匹配that syntax的输出。但是通常应该避免从变量输入创建查询。与SQL数据库一样,更好的答案是query parameterisation