Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么PHP会说字符串是有效的UTF-8,而PostgreSQL会记录一个;无效字节序列“;尝试将其插入数据库时出错?_Php_Postgresql_Unicode_Encoding_Utf 8 - Fatal编程技术网

为什么PHP会说字符串是有效的UTF-8,而PostgreSQL会记录一个;无效字节序列“;尝试将其插入数据库时出错?

为什么PHP会说字符串是有效的UTF-8,而PostgreSQL会记录一个;无效字节序列“;尝试将其插入数据库时出错?,php,postgresql,unicode,encoding,utf-8,Php,Postgresql,Unicode,Encoding,Utf 8,我用PHP通过IMAP接收电子邮件 在尝试将每个新传入的电子邮件插入数据库之前,我会进行一次基本检查,以确保正文文本(纯文本和HTML版本,如果都存在)是“有效的UTF-8”,如果不存在,我会将其删除并跳过进一步处理。我使用以下代码来实现这一点,在花了数年的时间在网上搜索和尝试之后,我决定使用以下代码: 有时,这似乎无关紧要,因为一封电子邮件会传递到PHP代码,然后PHP代码会将其插入PostgreSQL数据库表,因此会发生以下情况: pg_query_params(): Query faile

我用PHP通过IMAP接收电子邮件

在尝试将每个新传入的电子邮件插入数据库之前,我会进行一次基本检查,以确保正文文本(纯文本和HTML版本,如果都存在)是“有效的UTF-8”,如果不存在,我会将其删除并跳过进一步处理。我使用以下代码来实现这一点,在花了数年的时间在网上搜索和尝试之后,我决定使用以下代码:

有时,这似乎无关紧要,因为一封电子邮件会传递到PHP代码,然后PHP代码会将其插入PostgreSQL数据库表,因此会发生以下情况:

pg_query_params(): Query failed: ERROR:  invalid byte sequence for encoding "UTF8": 0xa0:
不管我事先做了什么检查,有些总是漏掉,记录错误。一次又一次

我到底需要做什么才能确保它永远不会发生?!我的代码有什么问题?为什么PHP说它是有效的UTF-8,而PostgreSQL则不是?!这怎么可能呢

最近的一封电子邮件,促使我再次尝试询问此事,是一封只有HTML部分的乱七八糟的垃圾邮件。它包含了混乱的UTF-8。当然,不管它包含什么,也不管是什么解析出来的。重要的是PHP将其视为“OK”,PG将其视为“错误”,因此,该死的错误会被记录下来,而不是像我所希望的那样,整个电子邮件被默默忽略


我做错了什么?这已经折磨了我很长一段时间了,我需要一劳永逸地解决它

你确定这不仅仅是:的重复,你还没有将DB的编码设置为UTF-8吗?是的,我确定这不是该问题的重复。我总是这样,因为我从来没有问过“重复项”。是的,我非常肯定所有的东西都在使用UTF-8:PHP、DB连接和PG数据库。@好吧,如果你这么肯定的话,那么错误就不会发生,你的问题也就不存在了。@LaurenzAlbe很明显它会发生,因为它确实发生了?我不懂你的逻辑。
pg_query_params(): Query failed: ERROR:  invalid byte sequence for encoding "UTF8": 0xa0: