【发布时间】:2021-07-03 16:06:42
【问题描述】:
我有一个带有 MySQL 数据库的站点,其中已经有很多数据,我在数据库的编码方面犯了一个错误,现在所有数据都不能通过“PHPMyAdmin”读取
现在我解决了编码问题,所有新数据都可读但旧数据不可读,问题出在与数据库的连接上,因为我没有添加“utf8”聊天集...
如果我从连接中删除 mysqli_set_charset($con,"utf8");,数据 OLD 是可读的
但随后 NEW 数据不可读。
有没有办法将错误的编码数据转换为正确的 UTF8?
【问题讨论】:
-
列数据类型?语言环境?
-
所有错误的编码列类型都是 VARCHAR 并且排序规则是 utf8_general_ci
-
你可以试试 utf8_encode 呃,即使说这个函数的名字不好。这当然是如果以前的字符集是 latin1
-
如果旧数据可以通过一种方式读取,则以这种方式读取,并以新方式调用
UPDATE。这将是修复数据库的一次性事情,因此代码会让人觉得浪费且非最佳,但事实就是如此。 -
相关:UTF-8 all the way through。顺便说一句,有人可以找到一个可能的 mojibake 实例 - 如果您在 minimal reproducible example 中添加 textual 不可读字符串的示例…
标签: php mysql sql encoding phpmyadmin