我有一个网站,内容为阿拉伯语,从不同的服务器迁移而来。在旧服务器上,所有内容都正确显示,假设一切都以 UTF-8 进行编码。
在当前服务器上,数据开始显示不正确,显示出“ نبذة عن ”等字符。
该应用程序基于 CakePHP 框架构建。
经过多次尝试,我将 MySql 连接数组中的“ encoding”参数更改为“ latin1”。对于不了解 CakePHP 的人来说,这将设置 MySql 的连接编码。即使在下面描述的步骤之后,将此值设置为 UTF8 也没有改变任何内容。
一些记录开始正确显示阿拉伯语,而其他记录仍然是乱码。
我已经进行了所有数据库和服务器检查,确认:
1.创建的数据库为 UTF-8。
2.表格为 UTF-8。
3.列没有明确设置编码,因此编码为 UTF-8。
4.PHP 中的默认字符集为 UTF-8
5.mysql.cnf 设置默认为 UTF-8
之后,我检索了我的数据并循环遍历它,使用 mb_detect_encoding 打印每个字符串(每行)的编码。显示正确的行返回 UTF8,而对于损坏的行则返回空值。
网站的数据已经被编辑过多次,可能使用不同的编码方式,这是我无法确定的。但我可以确认的是,这些数据可能通过的唯一两种编码方式是 UTF-8 和 latin1。
当 mb_detect_encoding 不返回任何内容且当前数据集未知时,是否有任何可能恢复数据?
更新:我发现在数据库在新服务器上运行时,my.cnf 已被更新。
以下指令已更改:
character-set-server=utf8
改为
default-character-set=utf8
不过,我不确定这是否有多大区别。
通过检查修改日期,我可以相对肯定地得出结论:我可以恢复的数据没有在新服务器上编辑,而无法检索的数据已被编辑。
在当前服务器上,数据开始显示不正确,显示出“ نبذة عن ”等字符。
该应用程序基于 CakePHP 框架构建。
经过多次尝试,我将 MySql 连接数组中的“ encoding”参数更改为“ latin1”。对于不了解 CakePHP 的人来说,这将设置 MySql 的连接编码。即使在下面描述的步骤之后,将此值设置为 UTF8 也没有改变任何内容。
一些记录开始正确显示阿拉伯语,而其他记录仍然是乱码。
我已经进行了所有数据库和服务器检查,确认:
1.创建的数据库为 UTF-8。
2.表格为 UTF-8。
3.列没有明确设置编码,因此编码为 UTF-8。
4.PHP 中的默认字符集为 UTF-8
5.mysql.cnf 设置默认为 UTF-8
之后,我检索了我的数据并循环遍历它,使用 mb_detect_encoding 打印每个字符串(每行)的编码。显示正确的行返回 UTF8,而对于损坏的行则返回空值。
网站的数据已经被编辑过多次,可能使用不同的编码方式,这是我无法确定的。但我可以确认的是,这些数据可能通过的唯一两种编码方式是 UTF-8 和 latin1。
当 mb_detect_encoding 不返回任何内容且当前数据集未知时,是否有任何可能恢复数据?
更新:我发现在数据库在新服务器上运行时,my.cnf 已被更新。
以下指令已更改:
character-set-server=utf8
改为
default-character-set=utf8
不过,我不确定这是否有多大区别。
通过检查修改日期,我可以相对肯定地得出结论:我可以恢复的数据没有在新服务器上编辑,而无法检索的数据已被编辑。