如何将 Django 与数据以 LATIN1 编码的旧 Postgresql 数据库一起使用?

发布于 2024-10-12 16:59:26 字数 147 浏览 1 评论 0原文

Django 似乎希望其数据库以 UTF-8 编码,但我们的旧数据库以 LATIN1 编码,这是旧系统所需要的。当从数据库读取/写入时,是否可以/可行地挂钩 Django 的数据库访问内容以在 UTF-8 和 LATIN1 之间进行转换?有没有更好的解决方案(不需要转换数据库)?

Django seems to want its database encoded in UTF-8, but our legacy database is encoded in LATIN1, which legacy systems require. It is possible/feasible to hook Django's db-access stuff to translate between UTF-8 and LATIN1 when reading/writing from/to the database? Is there a better solution (that doesn't require converting the db)?

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

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

发布评论

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

评论(2

情定在深秋 2024-10-19 16:59:27

如果您将 client_encoding 设置为 UTF8,只要您的数据库采用 LATIN1(而不是 SQLASCII),PostgreSQL 就会为您进行翻译。您可以让 django 发送 SET client_encoding='UTF8' 命令,也可以更改 postgresql.conf 中的默认值。

PostgreSQL will translate it for you if you set client_encoding to UTF8, as long as your database is in LATIN1 (and not in SQLASCII). You can either have django send a SET client_encoding='UTF8' command, or you can change the default in postgresql.conf.

摇划花蜜的午后 2024-10-19 16:59:27

我建议转储 sql 文件并使用 iconv 将所有内容转换为 UTF-8。

您可以使用与我用于西里尔文(俄语)Latin1 到 UTF-8 类似的内容:

iconv -f utf-8 -t latin1 < in.sql | iconv -f cp1251 -t utf-8 > out.sql

I suggest dumping the sql file and using iconv to convert everything to UTF-8.

You can use something similar to this which I used for cyrillic ( Russian ) Latin1 to UTF-8:

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