mysql - 将mysql中的 "????"转换为可读的内容?

标签 mysql character-encoding latin1 georgian

我们遇到过这样的情况:通过 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/

相关文章:

mysql - 无法获取正确的值以使用 JDBC for MySQL 从 latin1 字段查询中文值

c++ - 在 C++ 中转换字符编码

php - 将大型数据库从 Latin1 转换为 UTF8?

php - 如何使用 php 与 mysql 中的表进行交互

没有事务的 python-mysqldb

php - 如何使用唯一的随机序列号更新我的 MySQL 表列?

php - 如何在php和mysql数据库中正确进行字符编码

mysql - 如果 Node js存在mysql中则忽略更新数据

javascript - TextEncoder 和 TextDecoder 不是彼此的完美逆向

linux - 尝试查找其中包含特殊字符的文件