背景:
使用uniApp, 安卓底座 + webView 方式开发;
调用方式采用H5 向 底座发送消息, 底座判断消息类型, 然后连接打印机进行打印;
内容通过指令集方式传递给打印机;
过程当中发现部分标签可以正常打印, 但又有部分不行,打印机没反应, 也没有报错;
原因分析:
对比标签内容发现不能打印的指令集内容当中包含了一些特殊符号
继续对打印的方法进行分析, 发现前面步骤都是正常的, 只是到了转码指令集这一步之后就没有执行了
继续对这句代码拆解, 并在浏览器中调试进行输出, 这个时候报错出现了
这里百分号没办法使用 decodeURIComponent 直接转码, 报错了
decodeURIComponent("0KΩ ± 1%25(0603)")
查找资料后发现 在MDN 上是有对这个报错的提示的, 应该不止是 百分号, 其他一些符号也会导致这个情况;
URIError: malformed URI sequence - JavaScript | MDN
这一篇里面有更多的一些介绍及解决方法: decodeURIComponent在解析浏览器参数中含有%时报错处理
解决办法:
-
在H5将内容发送给底座时先进行一次 encode;
-
编写通用方法, 对内容中的特殊字符进行替换;