Postgresql不接受UTF字符串中的\0,而C#接受

Postgresql不接受UTF字符串中的\0,而C#接受,c#,postgresql,utf-8,C#,Postgresql,Utf 8,我有一些数据,其中包含一个\0字节,这似乎是有效的UTF8数据: using System; using System.Text; public class Program { public static void Main() { byte[] b = new byte[3]; b[0] = 65; b[1] = 66; b[2] = 0;

我有一些数据,其中包含一个
\0
字节,这似乎是有效的UTF8数据:

using System;
using System.Text;
                    
public class Program
{
    public static void Main()
    {
        byte[] b = new byte[3];
        b[0] = 65;
        b[1] = 66;
        b[2] = 0;
        
        Console.WriteLine(Encoding.UTF8.GetString(b));
    }
}
那个密码。但是,当试图更新Postgres中的记录时,它会抱怨:

22021:编码“UTF8”的字节序列无效:0x00

数据不应该存在,但一个系统接受数据,而另一个系统不接受数据,这怎么可能呢?我想他们都执行标准。

来自文档

这些数据类型中可以存储的字符由数据库字符集决定,数据库字符集在创建数据库时选择无论特定字符集如何,都无法存储代码为零的字符(有时称为NUL)。有关更多信息,请参阅第23.3节


谢谢,但是结果消息有点混乱。代码点似乎无效,但并非不允许。此外,对于某些背景,请阅读以下内容:
+-----------------------------------+----------------------------+
|               Name                |        Description         |
+-----------------------------------+----------------------------+
| character varying(n), varchar(n)  | variable-length with limit |
| character(n), char(n)             | fixed-length, blank padded |
| text                              | variable unlimited length  |
+-----------------------------------+----------------------------+