我有一个MySQL表,其中某些行是正确的UTF8,有些是作为ISO插入的。我需要将它们转换为UTF8。
例如
Hahnemühle
Hahnemühle
如何仅将ISO-8859-1中的行转换为UTF8?
这是我尝试过的。我正在检查iso-to-utf是否给出了有效的结果:
# create table
create table tmp1 (
txt varchar(100)
);
# insert data
insert into tmp1 values ('Hahnemühle');
insert into tmp1 values ('Hahnemühle');
# convert
update tmp1
set txt=convert(cast(convert(txt using latin1) as binary) using utf8)
where convert(cast(convert(txt using latin1) as binary) using utf8) is not null;
它给了我: [HY000] [1300]无效的utf8字符串:' ...'
这很奇怪,因为结果:
select txt
from tmp1
where convert(cast(convert(txt using latin1) as binary) using utf8) is not null
是:
Hahnemühle