写入BYTEA字段-错误:用于编码"UTF8": 0x98的无效字节序列


Writing to a BYTEA field - ERROR: invalid byte sequence for encoding "UTF8": 0x98

我正在将二进制数据写入UTF8数据库中的BYTEA字段。

当我通过PHP/PDO预处理语句运行查询时,我得到错误:

FATAL: SQLSTATE[22021]: Character not in repertoire: 7 ERROR:  invalid byte sequence for encoding "UTF8": 0x98

知道为什么它处理二进制数据,如果它应该是utf8编码?

找到了,解决方案是PG不允许二进制数据作为常规'字符串'值传递,它必须被视为一个特殊的'大对象'。

$stmt->bindValue(1, $field_data, PDO::PARAM_LOB);