php - 将 mysql 中的数据从 1252 转换并显示为 UTF-8

标签 php mysql utf-8

我有一个必须使用的旧数据库。问题是旧数据(主要是文本)存储在 1252(latin1_general_ci) 中,并且在页面上显示为 ??????。然后我将整个数据库和表转换为 UTF-8 排序规则,如下所示:

ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

但是旧记录的问题仍然存在。我知道上面的查询只是更改字段排序规则。我的问题是现在有办法在网页上正确显示那些 ?????? 记录吗?

最佳答案

1) 创建转储

mysqldump --default-character-set=latin1 --skip-set-charset mydatabase mytable > ./mytable.sql

2) 在 mytable.sql 中替换 utf8 中的 latin1

CREATE TABLE `test` (
  `id` int(10) unsigned NOT NULL,
  `name` char(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

3) 导入数据库

mysql --user=login -p --database=mydatabase < ./mytable.sql

mysqldump — A Database Backup Program

关于php - 将 mysql 中的数据从 1252 转换并显示为 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28791281/

相关文章:

php - HTML GET 和 POST 方法

python可以编码为utf-8但不能解码

utf-8 - 如何将ansi文本转换为utf8

php - 如果未找到字段如何回显?

php - 如何在twig中转换数组 block

php args不在div中居中

mysql - hibernate如何处理查询语句中的like关键字

mysql - where 不存在条件语法

php - 优化循环 select 语句

带有 ICU 的 C++ UTF-8 输出