- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 MS-Access 数据库,其中包含“加密”字符串。这些看起来像这样:
但是,我很快注意到这些字符串的长度与明文的长度完全匹配(我知道明文)。因此,通过尝试使用 Excel,我发现如果您使用 =CODE(<char>)
-function (这样您就可以得到默认字符集中的字符代码,=CHAR(<number>)
反之亦然)并将该数字与该符号应代表的字母的字符代码进行异或,您总是得到相同的结果。这意味着我只需要在 java 中使用这些值创建一个数组,瞧。 Excel 示例(右侧提到的“数组”): 示例:“>>”的索引为 (dec) 187,因此 187xor253 产生 70 => “F”
现在,我使用 jackcess 来访问这些值,“解密”大部分都很好,但有时我会从字符串中得到错误的字符。在 Excel 中,一切都运行良好。具有最佳结果的代码:
public static final int[] DECRYPT_KEY = { 253, 203, 204, 217, 226, 205, 128, 201, 222, 183, 58, 217, 230, 201, 183, 211, 158, 203, 167, 213, 35, 33, 201, 123, 186, 247 };
public static void main(String[] args) throws IOException
{
System.out.println(System.getProperty("file.encoding"));
Database db = DatabaseBuilder.open(new File("/home/***/TM.db"));
Table table = db.getTable("personal");
for (Row row : table)
{
String vorname = row.getString("vorname");
byte[] vornameArr = vorname.getBytes("cp1252");
for (int i1 = 0; i1 < vornameArr.length; i1++)
{
vornameArr[i1] = (byte) ((vornameArr[i1] & 0xff) ^ DECRYPT_KEY[i1]);
}
System.out.println(new String(vornameArr, "cp1252"));
}
}
但正如我所说,有些字符仍然是错误的,但在 Excel 中一切都很好。当我打印出 getBytes("cp1272")
的数字时给出,它与 Excel 完全不同。
你有什么想法吗?我可能做错了什么,为什么 java 有时会给出与 Excel 不同的值?什么是更好的方法?我已经尝试了所有字符集组合,其中一些组合有效,另一些则失败,但随后出现了其他错误的结果。
最佳答案
我能够通过使用问题中的字节值破解数据库文件来重新创建您的问题。线路
byte[] vornameArr = vorname.getBytes("cp1252");
尝试将 vorname
字符转换为 cp1252 字节,但没有与 U+008F(十进制 143, SINGLE SHIFT THREE )对应的 cp1252 字符,因此 Java 将该字符转换为问号( 0x3F)。因此,您的解码步骤是解码 0x3F 而不是 0x8F,这就是为什么您得到“FadiÝa”而不是“Fadima”。
通过将上面的单行替换为
,我能够得到正确的结果byte[] doubleBytes = vorname.getBytes("UTF-16LE"); // 187 0 170 0 168 0 ...
byte[] vornameArr = new byte[doubleBytes.length / 2];
for (int i = 0; i < vornameArr.length; i++) {
vornameArr[i] = doubleBytes[i * 2]; // remove nulls
}
然后通过解码循环运行 vornameArr
字节。 (如果您愿意,也可以在上述循环中应用解码转换。)
关于java - Jackcess:MSAccess 数据库的字符集错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43146115/
我需要根据以下 SQL 选择所有记录: Select ID, ID2 From Table1 Where ID2 NOT IN (Select ID2 From Table2 Where ID3 IN
我有一个 MS-Access 数据库,其中包含“加密”字符串。这些看起来像这样: 但是,我很快注意到这些字符串的长度与明文的长度完全匹配(我知道明文)。因此,通过尝试使用 Excel,我发现如果您使用
所以问题是我想连接到msaccess 数据库,每次打开它时都有密码。 如果我直接打开 Access 文件,密码就有效。 如果我删除密码,我可以建立连接,这意味着如果不涉及密码,我的代码可以工作 密码是
我使用下面的查询来获取每月的结果,比如[八月、九月等有多少……] 在下面的查询中,如果我使用 Format() 来获取结果,我将获取以下格式的数据 MyDate _count
我的查询: $att="select AttData.Rollno,AttData.Name,AttData.Year,AttData.sec,AttData.".$date."
我来自印度(这可能与这里的文化信息有关)。我正在使用 MS-ACCESS 2010 32 位作为后端在 C#.Net 2010 Express 中构建桌面应用程序。我正在使用 OLEDB 进行数据库连
首先,如果这个问题不属于 SO,我很抱歉,因为我不知道还有什么地方可以发布它,无论如何... 我正在寻找一个体面的基于 python 的数据库开发 RAD 框架,它具有很好的数据感知小部件和网格。桌面
我需要查明创建的表中是否有条目。 我需要的是, if (TableIsEmpty) then do_something else do_something_else; 我为此写的是
我正在使用 ms-access 开发数据库管理的前端解决方案。我必须承认,ms-access VBA 是开发大型应用程序的坚实限制,这就是为什么我一直在改变使用 c# 而不是 VBA 的想法。 事实上
我尝试使用 ms Access 作为数据提供者,但它给了我异常(exception)。 static void Main(string[] args) { DataCo
我想从 MSAccess2003 中导出几个表的内容。 这些表包含 unicode 日文字符。 我想将它们存储为波浪号分隔的文本文件。 我可以使用文件/导出手动执行此操作,并在“高级”对话框中选择波浪
我使用的是IDE Nebeans8.1和数据库访问2019。 我在尝试使用 ucanaccess 和所有需要的库连接到我的 datavse 时遇到错误。 我的ConnectionDatabase类:
是否可以使用 c# 压缩 Msaccess 数据库,如果可以,请告诉我方法? 最佳答案 你可以试试这样的东西 public static void CompactAndRepair(string ac
我有一个问题,我的一个客户需要 一个程序,将连接到 Oracle 数据库服务器,并将表下载/存储到本地文件(例如;microsoft access),就像转换一样之后客户端可以输入一个excel文件,
我喜欢 msaccess 的 dbstructure 定义,它可以轻松地同时定义和创建数据输入表单、数据表和报告。 我一直在寻找可以轻松生成数据输入表单、数据表和报告的框架。我想我唯一需要定义的是完整
我正在寻找一种方法来获取用于创建 MDB 文件的 MS Access 版本。 感谢任何(工具、.bat、c#)建议。 谢谢 最佳答案 在 VBA 代码中,您可以检查 FileFormat 属性以确定
我正在尝试打开在 Windows XP 上运行的旧 MS Access 2000 数据库,以便我可以在新应用程序中迁移旧数据库。数据库是由以前的旧 WPF 应用程序创建的,我需要找到一种方法来打开它。
我想将我的 Microsoft Access 数据库前端移动到源代码管理中,以便于保存和部署以及对更改进行一些控制。我正在使用此问题中的代码导出查询、表单、宏、报告,但不是表格。 必须有一种方法可以通
我希望能够使用 Sendwait 函数使用 powershell 命令自动化 MS-ACCESS 应用程序。不幸的是,我无法以通常的方式处理实际的应用程序窗口。我可以获取 MS-ACCESS 本身的句
我需要熟练的 WordPress 开发人员的建议。我的组织有内部 MS Access 数据库,其中包含大量表格、报告和输入表单。 DB的结构不太复杂(人员信息、事件、第三方信息以及它们之间的不同关系)
我是一名优秀的程序员,十分优秀!