程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQLite C# 从数据库返回错误的字节大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决sqlite C# 从数据库返回错误的字节?

开发过程中遇到sqlite C# 从数据库返回错误的字节的问题如何解决?下面主要结合日常开发的经验,给出你关于sqlite C# 从数据库返回错误的字节的解决方法建议,希望对你解决sqlite C# 从数据库返回错误的字节有所启发或帮助;

我正在尝试从 Chrome 数据库中检索密码,它在使用 Python 时运行良好,但在使用 C# 时我得到了不同的字节。

python代码从数据库查询密码时返回如下(十六进制值“76 31 30”为v10部分):

0x76 0x31 0x30 0xd2 0x72 0x89 0xc7 0xcf ...

C# 代码...

String passwordcolumn = reader.GetString(3); // returns third column
byte[] passBytes= EnCoding.UTF8.GetBytes(passwordcolumn); // get bytes from String
Console.Writeline(BitConverter.ToString(passBytes)); // pretty print

...返回以下内容:

76-31-30-EF-BF-BD-72-EF-BF-BD-EF-BF-BD ...

为什么我做的所有其他查询都会返回正确的字符串,但只有当我想要 password_value 列时,它才正确返回前三个字节?

有趣的是,当我尝试用这个检查字节时:

foreach (int a in passwordcolumn) {
    Console.Writeline(a);
}

我得到这个作为输出:

118
49
48
65533
114
65533
65533
65533
88
114
106
65533
65533
...

只有不是 65533 的值才是正确的,这是为什么呢?为什么有些字节是正确的,而另一些则不正确?最重要的是:如何解决这个问题?

解决方法

Unicode 字符 65533(以 UTF-8 编码为 EF BF BD)是 用于替换未知、无法识别或无法表示的字符的 replacement character。

似乎该列的数据类型不是 TEXT 而是 BLOB,您应该使用 GetBytes() 而不是 GetString()

大佬总结

以上是大佬教程为你收集整理的SQLite C# 从数据库返回错误的字节全部内容,希望文章能够帮你解决SQLite C# 从数据库返回错误的字节所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: