gpt4 book ai didi

python - 井号不显示 Jinja2(编码)

转载 作者:行者123 更新时间:2023-12-01 09:16:58 32 4
gpt4 key购买 nike

我在数据库中的值如下所示:

£40

这是一个较长句子的一部分,以防有人问我为什么这样存储它。

当我渲染文本(Flask/Jinja2/Python2.7.9)时,我得到的结果是这样的:

\xc2\xa340

这是为什么?

我的通话功能如下所示:

def content_brief_metadata(self):
try:
self.cursor.execute("set names utf8;")
self.cursor.execute('select title, description from metadata')
return self.cursor.fetchall()
except Exception as e:
return e
finally:
self.db.close()

我只是将数据传递给模板,仅此而已。

我还将模板的字符集设置为 utf-8。

最佳答案

Python 2 在处理 unicode 时很棘手,因为它本身只处理二进制。所以你的英镑符号已经被编码并存储在数据库中。您可以像这样检索它:

>>> '\xc2\xa340'.decode('utf-8')
u'\xa340'
>>> print('\xc2\xa340'.decode('utf-8'))
£40

因此可以在两个地方处理编码和解码:

存储数据之前。保存数据时,如果对其进行编码,则渲染不会出现问题。像这样的东西(伪代码):

cursor.execute('INSERT INTO metadata VALUES (%s, %s)', name.encode('utf-8), description.encode('utf-8'))

或者您可以在检索数据之后、发送到 render_template 函数之前解码二进制文件:

name = result[0].decode('utf-8')
description = result[0].decode('utf-8')
return render_template('template.html', name=name, desc=description)

选择一个更方便您实现的。

关于python - 井号不显示 Jinja2(编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51163702/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com