python将unicode转换为可读字符

python将unicode转换为可读字符,python,postgresql,unicode,Python,Postgresql,Unicode,我使用Python2.7和psycopg2连接到postgresql 我从一个包含字符串的源中读取了一组数据,如'aéropostale'。然后我将其存储在数据库中。然而,在postgresql中,它的结尾是'A\u00e9ropostale'。但我希望它被存储为“Aéropostale” postgresql数据库的编码为utf-8 请告诉我如何存储实际字符串“Aéropostale”。 我怀疑这个问题发生在python中。请给我一些建议 编辑: 这是我的数据源 response_json =

我使用Python2.7和psycopg2连接到postgresql

我从一个包含字符串的源中读取了一组数据,如
'aéropostale'
。然后我将其存储在数据库中。然而,在postgresql中,它的结尾是
'A\u00e9ropostale'
。但我希望它被存储为“Aéropostale”

postgresql数据库的编码为utf-8

请告诉我如何存储实际字符串“Aéropostale”。 我怀疑这个问题发生在python中。请给我一些建议

编辑:

这是我的数据源

response_json = json.loads(response.json())
通过服务呼叫获得响应,如下所示:

print(type(response.json())
>> <type'str'>
print(response.json())
>> {"NameRecommendation": ["ValueRecommendation": [{"Value": "\"Handmade\""}, { "Value": "Abercrombie & Fitch"}, {"Value": "A\u00e9ropostale"}, {"Value": "Ann Taylor"}}]
然后我使用json.dumps()将py_列表转换为json表示

最后,为了插入,我使用了psycopg2.cursor()和mogrify()

正如我前面提到的,使用上面的逻辑,带有特殊字符如è的字符串被存储为utf8字符代码。
请指出我的错误。

json.dumps
默认情况下转义非ASCII字符,因此其输出可以在非Unicode安全环境中工作。您可以通过以下方式关闭此功能:

json_py_list = json.dumps(py_list, ensure_ascii=False)
现在,您将获得UTF-8编码的字节(除非您也使用
编码=
)进行更改),因此您需要确保您的数据库连接正在使用该编码


一般来说,这两种格式都是有效的JSON,因此不应该有任何区别,即使使用
也要确保\u ascii
关闭,仍然有
\u
编码的字符。

数据来自哪里?看起来您要么存储了
repr()
表示,要么存储了JSON编码。请向我们显示您的代码。只需存储值即可。如果服务器需要utf-8数据,则只要您发送utf-8数据,就不需要执行进一步的操作。这不是编码不匹配的问题。您在代码中所做的一些事情并没有向我们展示,这会产生问题,您正在转换数据。了解一些基础知识(如您正在使用的数据库驱动程序)会很有用,但最重要的是,向我们展示代码。另请参见:尝试在utf8中转换拉丁字符串:
toStore=dataStr.decode('latin1')。如果是instance(dataStr,unicode),则转换为encode('utf8');否则转换为dataStr.encode('utf8')
。它们将在postgresql中正确显示。朋友们,我添加了一些代码片段。请再次查看我的问题并帮助我。您的数据库中最后出现了
'a\u00e9ropostale'
。这不是utf8,而是latin1或cp1252。因此,保留字符串的原始编码。那有什么问题??是否要将它们转换为utf8,以便在数据库查看器中正确显示?
json_py_list = json.dumps(py_list)
conn = psycopg2.connect("connectionString")
cursor = conn.cursor()
cursor.execute(cursor.mogrify("INSERT INTO table (columnName) VALUES (%s), (json_py_list,)))
json_py_list = json.dumps(py_list, ensure_ascii=False)