首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mysql使用utf8mb4_unicode_ci排序规则生成乱码文本?

问为什么mysql使用utf8mb4_unicode_ci排序规则生成乱码文本?
EN

Stack Overflow用户
提问于 2019-10-15 03:27:28
回答 2查看 83关注 0票数 1

我在mysql数据库中有一个带utf8mb4排序规则的mediumtext列:

注释mediumtext utf8mb4_unicode_ci

当我执行mysql ENCODE时,文本被保存到数据库列:

代码语言:javascript
复制
INSERT INTO mytable VALUES (ENCODE('test', 'abc'));

但是,当我尝试解码文本时,它的输出是乱码:

代码语言:javascript
复制
SELECT DECODE(comments,'abc') FROM mytable WHERE 1

此示例将显示:

�1�= g3���

如果我将列更改为latin1_swedish_ci,则一切正常工作,并显示“测试”。注意,我保存了通过php表单输入"test“文本,但没有以任何方式处理数据。

1-有什么想法可以解释为什么会发生这种情况吗?

2-有没有办法解码乱码文本?我尝试了几种方法,但都没有效果。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-10-15 03:49:04

可能字符串默认为latin1。试试这个:

代码语言:javascript
复制
INSERT INTO mytable VALUES (ENCODE(_utf8mb4'test', 'abc'));
票数 0
EN

Stack Overflow用户

发布于 2019-10-18 12:32:39

不要在文本列中放置非文本。

ENCODE生成二进制信息,因此将其放入二进制列,如MEDIUMBLOB。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58382967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档