Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BLOB未在MySQL中存储utf-8(中文)_Mysql_Utf 8 - Fatal编程技术网

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

BLOB未在MySQL中存储utf-8(中文),mysql,utf-8,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并没有将其存储为中文,而是存储了一些垃圾值 像«å«、åæææææççç 我到处检查,它说字符集必须是utf8,这就是我的情况 我使用的MyS

我有一张这样的桌子

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并没有将其存储为中文,而是存储了一些垃圾值 像«å«、åæææææççç 我到处检查,它说字符集必须是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工作台的查看器中检查文本,我可以看到123456,但对于中文,我看到的是垃圾


谢谢

您可以尝试设置数据库的字符集和列。

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;
ALTER数据库字符集utf8 COLLATE utf8\u unicode\u ci;
ALTER TABLE MODIFY VARCHAR(255)字符集utf8 COLLATE utf8\U unicode\U ci;

希望这能帮助你

对于中文,您需要
字符集utf8mb4
,以及一些可选的
排序规则
,以
utf8mb4
开头,默认值可能是可以的

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

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


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

我尝试了这个ALTER TABLE MODIFY BLOB字符集utf8 COLLATE utf8\U unicode\U ci;但由于某些原因,MySQL给出了BLOB的语法错误。BLOB是二进制类型,字符集仅适用于文本字段。对于BLOB,编码问题可能来自代码中写入和读取BLOB文件的方式。
BLOB
是二进制垃圾,您希望如何/何时/何地将其显示为中文字符?你到底是如何插入数据的?我使用MyBatis来插入和选择,我将以JSON的形式显示数据。对于英语来说,它工作得很好,只有对于汉语,我才面临这个问题。展示一些具体的代码示例。这很简单,意味着您的查看器没有以正确的编码解释二进制数据(因为它只是没有意义的二进制数据)。这并不意味着MySQL存储不正确或有任何错误。但当我执行Select语句并将其映射到POJO并转换为JSON时,对于英语它运行良好,但对于汉语它显示垃圾。我该怎么办?观众正在翻译英文文本。