我正在构建一个字符串查询(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。或者我可能没有使用正确的功能。
答案 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。