mysql 如何将数据库中损坏的旧数据或损坏的字符集转换为UTF-8?

wbrvyc0a  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(88)

我有一个数据库,但其中的数据不兼容UTF-8,并显示土耳其字符损坏。我需要一个关于如何自动或手动翻译数据的详细帮助。我已经尝试了所有的方法,但不知道如何用兼容的字符替换损坏的字符。
post subjects looks like this
有太多我无法取代的符号。

hjqgdpho

hjqgdpho1#

您还没有给我们提供太多的信息,但是假设您已经通过latin 1连接将UTF-8数据插入到latin 1列中,您可以执行以下操作。
给定一个posts表,如下所示:

CREATE TABLE posts (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    subject VARCHAR(255) NOT NULL,
    body TEXT NOT NULL
) DEFAULT CHARSET=latin1;

字符串
您可以创建一个新表,如下所示:

CREATE TABLE posts_utf8 (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    subject VARCHAR(255) NOT NULL,
    body TEXT NOT NULL
) DEFAULT CHARSET=utf8mb4;


然后用以下内容填充它:

INSERT INTO posts_utf8
SELECT id,
    CONVERT(BINARY subject USING utf8mb4),
    CONVERT(BINARY body USING utf8mb4)
FROM posts;


如果您对新表的内容满意,则可以切换它们:

RENAME TABLE posts TO posts_old, posts_utf8 TO posts;

相关问题