我有一张这样的表
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但是对于中文我看到了垃圾。
由于
答案 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;什么用于插入和选择?