我正在尝试存储一些文本(例如č
)在 Postgres 数据库中,但是当检索该值时,它在屏幕上显示为?
。我不知道为什么会这样做,我的印象是它是 UTF-8 中不支持的字符,但在 UTF-8 中是支持的,但是,从第一个答案来看,这是一个错误的假设。
原始问题(可能仍然有效):
我读过有关 UTF-8 代理对的内容,这可能会实现我的目标
需要,我见过一些涉及stringinfo
目的TextElementEnumerators
,但我无法制定出一个实用的
概念证明。
有人可以提供一个如何编写和读取 UTF-16 的示例吗
(可能使用这个代理对概念)到 postgres 数据库。
谢谢。
更新的问题:
为什么会č
从数据库返回的字符作为问号?
我们使用NPGSQL来访问数据库和VB.Net。
不存在 UTF-16 中存在但 UTF-8 中不存在的字符。两者都能够对所有 Unicode 进行编码。换句话说,如果你能让 UTF-8 工作,它应该能够存储任何有效的 Unicode 文本。
EDIT: 代理对 http://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B10000_to_U.2B10FFFF实际上是 UTF-16 而不是 UTF-8 的一个特性。它们允许将不在基本多语言平面 (BMP) 中的字符表示为两个 UTF-16 代码单元。基本上,UTF-16 通常被视为固定宽度编码(每个 Unicode 字符正好两个字节),但这仅允许 BMP 干净地编码。代理对是一种将范围扩展到 BMP 之外的(相当老套的)方法。
我非常怀疑你试图代表的角色是否在 BMP 之外,所以我怀疑你需要在其他地方寻找问题。特别是,值得转储文本的确切字符值(例如,通过转换每个char
to int
)在它进入数据库之前和获取它之后。理想情况下,在一个简短但完整的控制台应用程序中执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)