日期:2014-05-17  浏览次数:20381 次

保存图片指纹(一串乱码)到mysql, 求分析
本帖最后由 JJ___JJ 于 2013-08-08 15:10:59 编辑
各位大大, 图片指纹如下:



sql为:

 update test set `bitmap` ='輀+W&+N{|\0Ox0\\$8)sld\"Z|y|\0ZZ!\0]P!Zw\Z\Zgm|p\"y^W|)Q,\0xc{\0\Z\\[#]pEXcto[ER`\'l{b&8P8j[w1y^t|d0YSMK![sj\0Kyww7)PE\ZIPv^m|\0\0\0{\0PK^\0y|x-e^|jcxc|`N' where id = 168; 

bitmap字段为varchar 255
很奇怪的一件事, 直接php运行sql, 会报错:

$query = "update test set `bitmap` ='".mysql_real_escape_string($bitmap)."' where id = {$picture['id']};";
1366: Incorrect string value: '\xDD[+W&+...' for column 'bitmap' at row 1


直接copy这段sql去mysql客户端执行, 是没问题的. 目前认为是copy的时候, 这段指纹乱码没有能copy完整, 或者已经变了,
如果不加mysql_real_escape_string, 而是将指纹乱码保存到文本, 是无法copy出来 只能粘贴处部分. 
求大大们帮忙分析, 非常感谢.
MySQL 乱码

------解决方案--------------------
保存 base64 编码,可免去一切烦恼

直接保存,则bitmap字段必须为二进制的
但并不保证一定能存储成功