【问题标题】:Postgresql - "ERROR: character with byte sequence 0xf0 0x9f 0x98 0x84 in encoding "UTF8" has no equivalent in encoding "WIN1252""Postgresql-“错误:编码“UTF8”中字节序列为0xf0 0x9f 0x98 0x84的字符在编码“WIN1252”中没有等效项”
【发布时间】:2022-01-17 03:07:43
【问题描述】:

所以我用这个查询在我的 Heroku 服务器上查询

// Command to get into postgres
heroku pg:psql
// Query
SELECT * FROM cheers_post;

然后我得到这个错误

ERROR:  character with byte sequence 0xf0 0x9f 0x98 0x84 in encoding "UTF8" has no equivalent in encoding "WIN1252"

我不知道 UTF8 中的 0xf0 0x9f 0x98 0x84 是什么字符。这个错误不是很明确,所以我不确定问题是什么或如何解决它。有人经历过吗?有趣的是,当我通过 Django API 端点查询 cheers_post 表时,它返回 Post.DoesNotExist 错误。

【问题讨论】:

    标签: django postgresql


    【解决方案1】:

    错误尽可能明确:该字符(?,UNICODE 代码点 1F604)无法在您选择的客户端编码中表示。

    解决方案很简单:选择可以表示字符的不同客户端编码,例如UTF8。如果这不是一个选项,请不要从数据库中获取该值。

    【讨论】:

    • 所以这是否意味着有人试图用只能在UTF8 中表示的字符填充其中一个属性字段,但是因为它是为WIN1252 设置的,所以我收到了这个错误?如何更改“客户端编码”?
    • 有人在数据库中存储了一个表情。这不能用 Windows 单字节编码表示。我不知道您应该如何更改应用程序中的客户端编码 - 那是特定于应用程序(或驱动程序)的。
    • 我的印象是 postgres 自动支持 UTF8。你知道为什么它默认为WIN1252吗?我有另一个存储表情符号的表,并且该表不会引发错误。
    • PostgreSQL 支持 UTF-8(否则你不能有那个字符),但是你指定了 WIN1252 客户端编码。那是你的问题。
    • 嗯,很有趣。谢谢你,我发布了一个单独的问题,询问如何更改客户端编码。我对 Django 的这方面并不是很熟悉。或者这是 postgresql 或 Heroku 的东西?
    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多