我们遇到过这样的情况:通过 ODK Aggregate 收集到 MySQL 数据库中的几个月数据无法读取。
数据是格鲁吉亚字符,但发送到具有 latin1 字符集/排序规则的数据库。
数据管理员直到几天前才发现这个问题,而且我从来没有意识到他们正在使用这些角色进行调查......所以现在的问题显然是 1)我们可以恢复现有数据吗?和 2)如何确保 future 的数据可读?
我可以做一个 从表中选择十六进制(列)
并获得十六进制输出,但看起来是这样的:
3F3F3F3F203F3F3F3F3F3F3F3F203F3F3F3F3F3F3F3F3F
3F3F3F3F3F3F3F
E18397E18391E18398E1839AE18398E183A1E18398
正如您所看到的,最后一行看起来是正确的,但其他行则不然。当我使用 latin1 创建测试表并尝试插入格鲁吉亚字符时,我得到了 警告:#1366 字符串值不正确:第 1 行“georgian_text”列的“\xE1\x83\x93\xE1\x83\x93...”
我在 Tomcat 日志中没有看到任何内容,但我假设每次提交记录时 Aggregate 都会收到相同的错误。
我的问题是:第一行中的十六进制可以转换为任何有用的东西吗?
最佳答案
3F 是字符“?”
对我来说这似乎是有损数据;您将无法将此数据转换回可读的内容。
为了避免这种情况,您需要在应用程序的所有层中使用相同的字符集。 UTF-8 是一种流行的选择。
关于mysql - 将mysql中的 "????"转换为可读的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946719/