postgresql - Pg-promise 客户端无法从 ElephantSQL 云数据库中正确检索特殊字符

标签 postgresql character-encoding special-characters pg-promise

我目前正在编写一个 API,使用 pg-promise 连接到 ElephantSQL 实例。一切正常,除了文本列中的特殊字符(如重音字母)未正确检索(即“Collège”一词在 JSON 对象中显示为“Collège”)。我想这与编码有关,但特殊字符在 ElephantSQL 的仪表板中正确显示,所以我不认为数据库编码是错误的——尽管我一开始找不到任何关于数据库编码的信息。所以我最好的猜测是,我需要向客户端添加一些内容以指定我希望获得结果的编码。我已经尝试调整 client_encoding,如 this page 中所述。 ,使用 utf8latin1,但无济于事。是不是我遗漏了什么,或者我只是尝试了错误的编码?

更新

运行以下查询时:

SELECT * 
  FROM information_schema.character_sets;

我得到以下 JSON 对象:

{
character_set_catalog: null,
character_set_schema: null,
character_set_name: "UTF8",
character_repertoire: "UCS",
form_of_use: "UTF8",
default_collate_catalog: "ggnonllb",
default_collate_schema: null,
default_collate_name: null
}

所以我知道我的在线数据库是用 UTF8 编码的(正如人们所期望的那样)。但是,即使我运行的每个查询都包含在 SET CLIENT_ENCODING TO 'UTF8'; 中,我的问题仍未解决。所以我感到非常困惑。好像这与字符编码无关。但是,如果不是字符编码问题,为什么 pg-promise 客户端会得到带有特殊字符的结果呢?此外,这只会在检索数据时发生,而不会在发布数据时发生,因为特殊字符会在 ElephantSQL 的仪表板中正常显示。

最佳答案

其实,我想通了。似乎是响应的字符编码有问题。当我从浏览器查询我的 API 时,特殊字符仍未按应有的方式显示,但当从我的应用程序调用时,一切正常。

关于postgresql - Pg-promise 客户端无法从 ElephantSQL 云数据库中正确检索特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57494561/

相关文章:

r - 将 R 字符公式转换为数字

postgresql - 运行 DockerFile 创建并使用 pg_restore 恢复转储时出现错误

java - apache tomcat 服务器上的数据库 postgresql

performance - (varchar 作为性能列的类型?

python - DJANGO:通过 QuerySet except() 进行 FK 字段查找

java - 以字符集安全的方式获取 Windows 上的进程列表

swift - 特殊字符在 URLQueryItems 中没有被正确编码

php - 在 PHP 中将 ' 转换为撇号

node.js 子 fork 进程编码

php - 如何解析包含 "parse_ini_file"特殊字符的 ini 文件?