BLOB没有在MySQL中存储utf-8(中文)

时间:2016-01-20 09:27:55

标签: mysql utf-8

我有一张这样的表

CREATE TABLE account_data (
    id BIGINT NOT NULL,
    data BLOB NOT NULL,
    PRIMARY KEY (account_id)
)  ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

然而,MySQL并没有将它存储为中文,而是一些垃圾值 喜欢«å«ææææç·è 我到处检查,它说CHARSET必须是utf8,这是我的情况 我使用的MySql版本是5.6.14。

我试过

ALTER TABLE account_data MODIFY data BLOB CHARACTER SET utf8 COLLATE utf8_unicode_ci;

但由于某种原因,MySQL正在为BLOB提供语法错误。

如果我这样做

insert into account_data (id
            ,data)
        VALUES
            (5952638508182497,

"123456偟 滭滹漇 嶕憱撏 齞齝囃 熤熡"

            );

并在MySQL工作台的Viewer中检查TEXT,我可以看到123456但是对于中文我看到了垃圾。

由于

2 个答案:

答案 0 :(得分:0)

您可以尝试设置DB的字符集以及列。

ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci;

希望这可以帮到你!

答案 1 :(得分:0)

对于中文,您需要CHARACTER SET utf8mb4,以及从COLLATION开始的某些utf8mb4_,默认情况可能还不错。

BLOB应该按照您的描述工作,但可能插入连接和读取连接的配置不同。你提到了Workbench;什么字符集在其中设置?这用于阅读和写作吗?

您提供的示例乱码(无法正确映射到任何中文)看起来像,就像Mojibake一样,这通常是由为连接建立latin1引起的。 (这是旧的默认设置。)

你提到了5.6.14;什么用于插入和选择?