gpt4 book ai didi

.net - 如何在 Postgres 数据库中存储 UTF-16 字符?

转载 作者:行者123 更新时间:2023-11-29 12:31:45 25 4
gpt4 key购买 nike

我试图在 Postgres 数据库中存储一些文本(例如 č),但是当检索该值时,它在屏幕上显示为 ?。我不确定它为什么这样做,我的印象是它是一个 UTF-8 不支持的字符,但在 UTF-8 中,但是,从第一个答案来看,这是一个错误的假设.

原始问题(可能仍然有效):

I have read about UTF-8 Surrogate pairs, which may achieve what I require, and I've seen a few examples involving the stringinfo object TextElementEnumerators, but I couldn't work out a practical proof of concept.

Can someone provide an example of how you would write and read UTF-16 (probably using this surrogate pair concept) to a postgres database. Thank you.

更新的问题:为什么 č 字符会作为问号从数据库返回?

我们使用 NPGSQL 访问数据库和 VB.Net。

最佳答案

不存在 UTF-16 而 UTF-8 不存在的字符。两者都能够编码所有 Unicode。换句话说,如果您能让 UTF-8 工作,它应该能够存储任何有效的 Unicode 文本。

编辑:Surrogate pairs实际上是 UTF-16 而不是 UTF-8 的特性。它们允许不在基本多语言平面 (BMP) 中的字符表示为两个 UTF-16 代码单元。基本上,UTF-16 通常被视为固定宽度的编码(每个 Unicode 字符恰好两个字节),但这只允许 BMP 被干净地编码。代理对是一种将范围扩展到 BMP 之外的(相当老套的)方法。

我非常怀疑您要表示的角色不在 BMP 范围内,因此我怀疑您需要到别处寻找问题所在。特别是,值得在文本进入数据库之前和获取文本之后转储文本的确切字符值(例如,通过将每个 char 转换为 int)。理想情况下,在一个简短但完整的控制台应用程序中执行此操作。

关于.net - 如何在 Postgres 数据库中存储 UTF-16 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com