首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres列加密错误-编码"UTF8":0xa3的无效字节序列

Postgres列加密错误-编码"UTF8":0xa3的无效字节序列
EN

Stack Overflow用户
提问于 2016-07-25 04:56:57
回答 2查看 1K关注 0票数 0

我试图使用自己的算法加密Postgres表列。我从文件中读取rsa密钥,并使用算法加密数据。我的专栏类型是旁白。

当我尝试插入加密数据时,Postgres会给出以下错误:

pg_query():查询失败:错误:编码"UTF8":0xa3的无效字节序列

我尝试了几个选项,设置编码在互联网上找到,但没有工作。

我不知道是什么导致了这个错误。

EN

回答 2

Stack Overflow用户

发布于 2016-07-25 19:41:57

代码的突出部分由以下几行组成:

代码语言:javascript
复制
$ec = SaferCrypto::encrypt($c, $k);

因此,在这一点上,$ec大概包含二进制。所以剩下的都是错的:

代码语言:javascript
复制
$query = "INSERT into enc_test values('$ec')";
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

因为您试图在查询的文本中直接传递二进制内容。必须将该值编码在文本表示中,才能将其作为文字注入查询的value子句中。

这应该用pg_escape_bytea()函数来完成。

票数 1
EN

Stack Overflow用户

发布于 2016-07-25 06:34:23

问题在于,您正在尝试将二进制数据存储在字符串中(textcharacter varying、…)。列。

PostgreSQL拒绝与参数client_encoding设置的编码不匹配的数据。如果你学习RFC 3629,你会发现在UTF-8中没有一个字符可以从0xa 3(二进制10100011)开始。

解决方案是使用bytea (字节数组)类型的列来存储二进制数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38559986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档