如何使用 Python 保存数据库响应中字符串的完整性

发布于 2024-10-18 03:27:39 字数 701 浏览 3 评论 0原文

我使用 py-postgresql 作为数据库驱动程序,当选择包含非 ASCII 字符的字符串时,响应将字符替换为“�”我可以做什么来将其更改为正确的字符?

这是我的代码:

class decodify:

    def __init__(self):
        db = pgDriver.connect(user = 'demo', password='demo' database='hidura_karinapp', host='localhost', port='5432')
        d = db.prepare("""SELECT modules_reg.code FROM modules_reg, domain_reg, sbdomain_reg, sbdomdl_asc where(modules_reg.id = sbdomdl_asc.module AND modules_reg.mdname = 'police' AND sbdomain_reg.id = sbdomdl_asc.domain AND sbdomain_reg.domain = domain_reg.id AND domain_reg.dname = 'bmsuite.com' AND sbdomain_reg.sbname = 'www')""")
        s = d()
        print(s)

if __name__ == '__main__':
    decodify()

i am using py-postgresql as the driver the database, when make a select to a string with non-ASCII characters, the response replace the character with "�" what can i make to change this to the correct character?

This is my code:

class decodify:

    def __init__(self):
        db = pgDriver.connect(user = 'demo', password='demo' database='hidura_karinapp', host='localhost', port='5432')
        d = db.prepare("""SELECT modules_reg.code FROM modules_reg, domain_reg, sbdomain_reg, sbdomdl_asc where(modules_reg.id = sbdomdl_asc.module AND modules_reg.mdname = 'police' AND sbdomain_reg.id = sbdomdl_asc.domain AND sbdomain_reg.domain = domain_reg.id AND domain_reg.dname = 'bmsuite.com' AND sbdomain_reg.sbname = 'www')""")
        s = d()
        print(s)

if __name__ == '__main__':
    decodify()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一人独醉 2024-10-25 03:27:39

您是否设置 client_encoding ?理论上 py-postgresql 应该自动使用正确的 client_encoding 。要么您将其设置为错误,要么它的检测方式有问题,在这种情况下您必须对其进行设置。那么问题是做什么。 :)

Are you setting a client_encoding ? In theory py-postgresql should use the correct client_encoding automatically. Either you are setting it to something wrong, or there is something wrong on how it detects it, in which case you have to set it. The question is then to what. :)

只为守护你 2024-10-25 03:27:39

您在数据库中使用什么字符编码?检查 postgresql.conf 文件中的 client_encoding 设置,看看是否也是 utf-8。

What character encoding are you using in the database? Check the client_encoding setting in your postgresql.conf file, and see if that's utf-8 as well.

染火枫林 2024-10-25 03:27:39

我所做的是将Python默认编码设置为与数据库编码相同的技巧。我的数据库是UTF-8,所以我必须像这样启动顶级脚本:

#!/usr/bin/python -S

import sys
sys.setdefaultencoding("utf-8")
import site

所有字符串都是干净的,无需翻译。 Python 2.x 就是这样。 Python 3 可能有所不同。

What I do is a trick to set the Python default encoding to the same as the database encoding. My database is UTF-8, so I have to start top-level scripts like this:

#!/usr/bin/python -S

import sys
sys.setdefaultencoding("utf-8")
import site

The all the strings come across clean, without translation. That's with Python 2.x. Python 3 may be different.

潜移默化 2024-10-25 03:27:39

您可以使用 psycopg2,它支持 unicode...

You could use psycopg2, which supports unicode...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文