如何将 Django 与数据以 LATIN1 编码的旧 Postgresql 数据库一起使用?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您将 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.
我建议转储 sql 文件并使用 iconv 将所有内容转换为 UTF-8。
您可以使用与我用于西里尔文(俄语)Latin1 到 UTF-8 类似的内容:
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: