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. matlab中的expotest,提高Fortran矩阵指数性能(Expokit比Matlab、Python慢)
  2. 原 EOS智能合约开发入门
  3. 06上半年网络工程师试题分类精讲.第一部分:计算机与网络知识(上午考试科目).第一章:计算机系统知识...
  4. [蓝桥小记]蓝桥杯参赛经历分享
  5. 如何修改linux的MAC地址
  6. Notification的学习,4.0前后的差别,和在设置声音的时候获取资源的uri方法
  7. 深入源码,深度解析Java 线程池的实现原理
  8. FPGA实现低高速接口更新说明
  9. win10系统更新补丁时进度条一直卡在0%不动的解决方案
  10. 一天一个设计模式:工厂方法模式
  11. Oracle 视图、序列、索引、游标、触发器、事务
  12. 素数筛 python
  13. 有关windows10修改C盘用户中文名文件夹相关问题的具体解决方案
  14. php私有云盘,教你搭建个人/企业私有云盘-kodexplorer
  15. Android异常之SIGABRT
  16. 蜗窝科技 spin lock (讲的非常不错)
  17. 微信小程序毕业设计开题报告医院预约挂号小程序+后台管理系统|前后分离VUE.js
  18. day05-python数字类型和列表
  19. Javascript的设计模式之从设计到模式(重要设计模式)
  20. dijkstra习题集

热门文章

  1. 对软件工程与计算机科学之间区别的看法
  2. 谁把20岁上下的你给洗脑了
  3. angular入门-ngOptions
  4. 新站SEO优化五点注意事项!
  5. (积累)java里的套接字
  6. Unknown property 'mybatis-plus' yml文件报错
  7. Perl Nmap报告处理摸索(学习)
  8. 笔迹鉴别(5) —— 笔迹判别
  9. nodejs-EventEmitter
  10. hdu5247找连续数(打表)