gpt4 book ai didi

c# - 具有特殊 F801 字符的 SQL Server nchar 和 .Net unicode

转载 作者:行者123 更新时间:2023-11-30 18:02:28 27 4
gpt4 key购买 nike

我有一个包含现有数据的现有数据库,我无法更改它的结构或值。在该数据库中,有一个 nvarchar 列,其中包含以 F800 向上开头的 twilight unicode 区域中的值。当我在 SQL 中选择这些值或使用 SQL 函数时,unicode - 我得到了正确的值。当我在 .Net 中选择相同的值时 - 我得到一个错误值 - 该模糊区域中的所有值都变为 65533。我需要这些值 - 我如何才能说服 .Net 给我这些值 - 比如将连接编码更改为自定义编码 - 或 ucs-2 等...

下面是演示问题的示例代码:

c.CommandText = "select NCHAR(55297)";
using (var r = c.ExecuteReader())
{
r.Read();
var result = r[0]; //expected 55297 but got 65533
}

最佳答案

55297是没有定义的D801?你可能想要 f801 也就是 63489?但它似乎也没有定义。你想要哪些角色?

如果我尝试在 SQL Server Management studio 中执行“select NCHAR(55297)”,我会返回菱形问号,但如果我执行“select NCHAR(63489)”,我会返回某种类型的点:

如果你想要的是字符值,你可以直接请求它们:

select Unicode(NCHAR(63489))

这将返回 63489(作为整数)

如果你想把它们作为一个字节数组,你可以这样要求:

select CONVERT(varbinary(MAX), FieldThatIsAnNvarchar) from ThatTable

关于c# - 具有特殊 F801 字符的 SQL Server nchar 和 .Net unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8069971/

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