如何从 MySql 列中删除或转换非 UTF 8 / UTF-8 字符

MDr*_*mer 2 mysql casting utf-8

我在 MySql 5 DB 上有一张表。该表包含的数据不是有效的 UTF-8 / UTF8。

该字段的数据类型为LONGTEXT.

以下是此类数据的示例:

receiver?àùs 
Run Code Online (Sandbox Code Playgroud)

我尝试通过多种方式转换和更改字符集:

ALTER TABLE Table1 CONVERT TO CHARACTER SET utf8;

ALTER TABLE Table1 convert to character set utf8 collate utf8_general_ci;

ALTER TABLE Table1 CHANGE `col1` `col1` LONGTEXT CHARACTER SET utf8;
Run Code Online (Sandbox Code Playgroud)

在我更改表格后,我尝试从包含该数据的另一个表格重新加载它,但它没有改变......它看起来像“接收器?àùs”而不是 UTF 8 字符。

我怎样才能转换它?

MDr*_*mer 5

这解决了我的问题:

select convert(binary convert(`Table1`.`col1` using latin1) using utf8) 
FROM `Table1`
Run Code Online (Sandbox Code Playgroud)

后来我更新了表格 - 我丢失了一些数据,但我不介意。大部分都留下了。

更新查询如下:

Update Table1 
Set col1 = convert(binary convert(col1 using latin1) using utf8)
Run Code Online (Sandbox Code Playgroud)