You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中ByteA数据解码:非英文字符显示异常求助

PostgreSQL ByteA 非英文字符显示异常的解决方法

问题根源

你当前使用的encode(cont_json, 'escape')会将ByteA中的非ASCII字节转换为八进制转义序列(比如ä变成\334),后续的replace操作仅处理了空字符和转义符,并未将转义序列还原为原始字符,导致非英文字符显示异常。

正确解决方案

直接使用convert_from函数将ByteA类型的二进制数据转换为指定编码的文本,无需多余的encode和replace操作:

1. 匹配原始数据编码执行查询

首先确认cont_json存储时使用的字符编码,对应执行以下SQL:

  • 如果是**ISO-8859-1(Latin-1)**编码(\334正是该编码下ä的八进制表示):
SELECT convert_from(cont_json, 'ISO-8859-1')
FROM dbo.cont_encode WHERE cont_ID=2;
  • 如果是UTF-8编码:
SELECT convert_from(cont_json, 'UTF8')
FROM dbo.cont_encode WHERE cont_ID=2;

2. 错误尝试的问题说明

你之前用的convert_from(decode('column', 'base64'), 'utf-8')存在两处错误:

  • decode('column', 'base64')是对字符串'column'做base64解码,而非调用cont_json列的数据;
  • 如果cont_json本身是原始二进制数据,不需要额外的base64解码步骤,直接用convert_from即可完成二进制到文本的转换。

验证结果

执行上述正确查询后,非英文字符(如ä)会显示为原始字符,而非八进制转义序列。

内容的提问来源于stack exchange,提问作者synccm2012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:48:12