Php 我有一个UTF-8MySQL数据库中的拉丁1编码数据,如何修复?

Php 我有一个UTF-8MySQL数据库中的拉丁1编码数据,如何修复?,php,mysql,encoding,character-encoding,Php,Mysql,Encoding,Character Encoding,我有一个UTF-8MySQL数据库中的拉丁1编码数据,如何修复?不幸的是,没有原始数据可供参考 我明白了这一点,因为我能够正确显示数据的唯一方法是用PHP、HTML和MySQL将所有内容设置为latin1 完成后,我可以在html和php中将所有内容更改回utf-8 版本: mysql版本14.12发行版5.0.51a,适用于使用readline 5.2的debian linux gnu(x86_64) 编辑: 我应该提到,在我告诉PHP和HTML使用拉丁1编码时,一切都正常,但是,这对我来说似

我有一个UTF-8MySQL数据库中的拉丁1编码数据,如何修复?不幸的是,没有原始数据可供参考

我明白了这一点,因为我能够正确显示数据的唯一方法是用PHP、HTML和MySQL将所有内容设置为latin1

完成后,我可以在html和php中将所有内容更改回utf-8

版本:
mysql版本14.12发行版5.0.51a,适用于使用readline 5.2的debian linux gnu(x86_64)

编辑:
我应该提到,在我告诉PHP和HTML使用拉丁1编码时,一切都正常,但是,这对我来说似乎很糟糕。

您可以尝试运行以下查询:

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
注意:我还没有尝试过,但这是从MY-SQL文档()中获取的。
上面链接的页面有一些更多的信息,但这似乎是您想要的查询(如果您想知道的话,它就贴在底部)。希望这有帮助。

我相信

我已经在下面解释了您需要采取的步骤-将“MyDb”替换为您的数据库名称我建议在开始之前进行备份

USE information_schema;
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'char', 'binary'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', REPLACE(column_type, 'text', 'blob'), ';') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%char%';
SELECT CONCAT('ALTER TABLE ', table_name, ' MODIFY ', column_name, ' ', column_type, ' CHARACTER SET utf8;') FROM columns WHERE table_schema = 'MyDb' and data_type LIKE '%text%';
将上面所有
SELECT
语句的输出复制到SQL脚本中。添加以下内容:

ALTER DATABASE MyDb CHARACTER SET utf8;

切换到MyDb(
使用MyDb;
)并运行SQL脚本。

这是什么版本的mysql?mysql版本14.12发行版5.0.51a,对于使用readline 5.2的debian linux gnu(x86_64),我所有的表和列都是UTF-8,只是其中的数据仍然是拉丁文编码的。哦,对不起,您尝试过使用CONVERT(使用utf8的列)吗关于你所有的疑问?然后可能使用转换后的数据更新表中的每一行?