大佬教程收集整理的这篇文章主要介绍了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,请注明来意。