将 mysql 中的数据从 1252 转换并显示为 UTF-8
Convert and show data in mysql from 1252 to UTF-8
我有一个必须使用的旧数据库。问题是旧数据(主要是文本)存储在 1252(latin1_general_ci) 中,并且在页面上显示为 ??????
。然后我将整个数据库和 table 转换为 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
我有一个必须使用的旧数据库。问题是旧数据(主要是文本)存储在 1252(latin1_general_ci) 中,并且在页面上显示为 ??????
。然后我将整个数据库和 table 转换为 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