我们遇到了这样一种情况,即通过 ODK Aggregate 收集到 MySQL 数据库中的几个月的数据无法读取。
数据是格鲁吉亚字符,但被发送到具有 latin1 字符集/排序规则的数据库。
数据管理员直到几天前才发现这个问题,我从来没有意识到他们正在使用带有这些字符的调查......所以现在问题显然是 1)我们可以恢复现有数据吗?2)如何确保未来的数据是可读的?
我可以做一个 SELECT HEX(column) FROM table
并获得十六进制输出,但看起来是这样的:
3F3F3F3F203F3F3F3F3F3F3F3F203F3F3F3F3F3F3F3F3F
3F3F3F3F3F3F3F
E18397E18391E18398E1839AE18398E183A1E18398
如您所见,最后一行看起来正确,但其他行不正确。当我使用 latin1 创建一个测试表并尝试插入格鲁吉亚字符时,我收到警告:#1366 Incorrect string value: '\xE1\x83\x93\xE1\x83\x93...' for column 'georgian_text' at row 1
我在 Tomcat 日志中看不到任何内容,但我假设每次提交记录时 Aggregate 都会收到相同的错误。
我的问题是:第一行中的十六进制可以转换为有用的东西吗?