昨天整微信的扫码支付时,用qrcode生成二维码,结果字符串太长而失败。今天发现利用pako压缩,可扫描后显示乱码,特记录一下。
palo插件地址:https://github.com/nodeca/pako
qrcode插件地址:https://github.com/jeromeetienne/jquery-qrcode
第一步:引入插件
<script src="__STATIC__/Js/jquery.min.js"></script>
<script src="__STATIC__/Js/pako.min.js"></script>
<script src="__STATIC__/Js/jquery.qrcode.min.js"></script>
第二步:调用方法
var binaryString = pako.deflate(JSON.stringify(str), { to: 'string' });//字符串压缩处理
这里的str可以内容为2000个字节以上,具体我没怎么测,压缩后的内容只有400多个字节,当然要区分中英文数字等。接下来开始生成压缩后内容的二维码
$('.qrcode').qrcode(binaryString); //二维码,但扫描后为乱码
扫描出的结果经过以下表达式则会还原原来的字符串
var restored = JSON.parse(pako.inflate(binaryString, { to: 'string' }));//字符串解压缩处理