mysql decode encode 乱码问题

帮网友解决了一个问题,感觉还是挺好的。

问题是这样的:

问个问题:为什么我mysql中加密和解密出来的字段值不一样?
AES_ENCRYPT和  AES_DECRYPT 

但是解密出来就不对了 有时候加密变成空值

我试过,确实有这样的情况:

INSERT INTO test () VALUES (ENCODE('老师你好','123456'));

插入了一个ENCODE的字符串,

SELECT DECODE(testField,'123456' ) FROM test;

查询出来的结果 是è€å¸ˆä½ 好, 看不懂啊!

注意到,test 表的编码是latin1, 如果test 表的编码是utf8 或者 gbk, 那么, INSERT INTO test () VALUES (ENCODE('老师你好','123456')); 这一句是会失败的, 我猜测 应该是编码问题。 如果开始是utf8,一个字符串在mysql之后, 其内容发生变化, 然后就变成了utf8不能认识的字符串了。 但是latin1 是可以认识的,因为 latin1是单字节编码的。

ENCODE('老师你好','123456') 是可以存入latin1 的。 但是不能正确读取。 其解析出来的字符串,latin1 无法表示 

注意到这一点,其实就好办了, testField 字段就用 latin1 编码, 读取的时候以latin1 的方式解析,然后再次组装成 utf8,。

这样,虽然可以, 但是,般不建议通过把密码明文直接传递到 数据库

应该是加密后再传递
通过md5 即可 

测试代码如下:

# show variables like 'character%';
drop TABLE if EXISTS test;
/* generating test table */
CREATE TABLE `test` (
`testField` varchar(512) DEFAULT NULL
# ) ENGINE=InnoDB DEFAULT CHARSET= 'UTF8' COLLATE utf8_general_ci;
) ENGINE=InnoDB DEFAULT CHARACTER SET latin1;/* adding some test data to it */
# INSERT INTO test () VALUES (DES_ENCRYPT("Hello")), (DES_ENCRYPT("World"));# INSERT INTO test () VALUES (ENCODE('abc','123')), ENCODE('mytext','mykeystring'));# INSERT INTO test VALUES('a阿萨德b');
INSERT INTO test () VALUES (ENCODE('老师你好','123456'));SELECT DECODE(testField,'123456' ) FROM test;SELECT * FROM test;# SELECT ENCODE('abc','123'), DECODE('aaa','123');SELECT DECODE(ENCODE('mytext','mykeystring'),'mykeystring');# SELECT DES_ENCRYPT('aa'), DES_DECRYPT('asdadw');

posted on 2017-08-10 16:47 CanntBelieve 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/FlyAway2013/p/7340106.html

mysql decode encode 乱码问题相关推荐

  1. mysql+encode+decode+错误_mysql decode encode 乱码问题

    帮网友解决了一个问题,感觉还是挺好的. 问题是这样的: 问个问题:为什么我mysql中加密和解密出来的字段值不一样? AES_ENCRYPT和  AES_DECRYPT 但是解密出来就不对了 有时候加 ...

  2. mysql取出的emoji表情是乱码_解决MySQL emoji表情乱码问题

    问题:解决MySQL emoji表情乱码问题 说明:在一些选择表情的功能里,往往传递到后端入库会抛出异常,这就需要进行处理,方法如下: 方式1.在mysql表点击设置中找到选项,并配置utf8mb4 ...

  3. navicat for mysql 显示中文乱码解决办法

    navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...

  4. springMVC保存数据到mysql数据库中文乱码问题解决方法

    springMVC保存数据到mysql数据库中文乱码问题解决方法 参考文章: (1)springMVC保存数据到mysql数据库中文乱码问题解决方法 (2)https://www.cnblogs.co ...

  5. Mybatis插入MySQL数据库中文乱码

    Mybatis插入MySQL数据库中文乱码 在dataSource.properties配置文件中设置useUnicode=true&characterEncoding=utf-8编码即可. ...

  6. mysql source防止乱码

    2019独角兽企业重金招聘Python工程师标准>>> mysql在安装时如果没指定编码为utf-8,则在使用source命令导入脚本时,记录中的中文会变成乱码,解决方式如下: my ...

  7. mysql保存中文乱码的原因和解决办法

    当你遇到这个mysql保存中文乱码问题的时候,期待找到mysql保存中文乱码的原因和解决办法这样一篇能解决问题的文章是多么激动人心.   也许30%的程序员会选择自己百度,结果发现网友已经贴了很多类似 ...

  8. jsp mysql utf8_jsp操作mysql存取中文乱码

    jsp操作mysql存取中文乱码 关注:148  答案:3  mip版 解决时间 2021-01-18 15:23 提问者 侑點尐悲伤 2021-01-17 18:03 如题:jsp间中文参数传递得到 ...

  9. matlab-JDBC操作MYSQL数据库中文乱码解决

    JDBC连接MYSQL数据库,使用MATLAB读写中文数据出现乱码,是由于MYSQL本身的配置问题 试验数据库的编码为UTF8,操作系统为中文WINDOWS,即操作系统的编码是GBK,如果不对MYSQ ...

最新文章

  1. C#版本的CPU性能测试
  2. 如果禁用了cookie 怎么传session
  3. Docker中容器数据持久化-数据卷的简单使用
  4. 百度推出 MIP Baidu Path链接
  5. 个人代码库の自定义后缀名
  6. 【项目管理】变更管理与过程改进
  7. Oracle ORA-27102的解决办法(out of memory)
  8. SpringBoot项目实现配置实时刷新功能
  9. LVS+Heartbeat+Ipvsadm+Ldirectord安装 (一)
  10. linux mysql查看数据库编码_MySQL查看和修改字符编码的实现方法
  11. 汇编语言复习摘要六——包含多个段的程序
  12. es 测试数据进行 增删查改
  13. python代码测试 vim_使用tmux+vim发送测试代码行的键绑定?
  14. c语言自动安装软件,VC++(c语言程序下载安装)
  15. UWP—网易云音乐的APP分析
  16. Torch not compiled with CUDA enabled报错的解决办法
  17. DFS:寻路问题(Roads)
  18. Best practices for a new Go developer
  19. 全国计算机图书销售订单记录,销售订单管理信息系统.doc
  20. 《数据结构C语言版》-栈的概念和栈的实现

热门文章

  1. iOS开发多线程篇—多线程简介
  2. 九、linux文件系统
  3. python爬虫——web前端基础(1)
  4. OpenCV-自定义harris检测
  5. 第1章 1.9计算机网络概述--OSI参考模型和网络安全
  6. 推荐一本书给大家《不懂带人 你就自己做到死》
  7. POJ 2151 Check the difficulty of problems (概率dp)
  8. 大话设计模式--建造者模式 Builder -- C++实现实例
  9. 改变 PropertyGrid 控件的编辑风格(2)——编辑多行文本
  10. 个性化邮件系统用例设计和实现