macbook,老版本开发工具,版本0.22.203100 (0.22.203100)。使用打印机GP-58MBIII打印小票,经典蓝牙。可以使用指令控制打印格式,可以打印字母数字等,但汉字就乱码,效果如下。另,微信小程序目前只支持低功耗蓝牙,是指根本不能发现和连接经典蓝牙设备,还是如下图所示,打印不正常。以后是否会支持经典蓝牙?哪位给个解答~
附字符串转ArrayBuffer代码:
function str2ab(str) {
// 19968-40869
var buffer = new ArrayBuffer(str.length * BYTE_PER_ELEMENT)
var dataView = new Uint16Array(buffer)
var array = []
for (var i = 0, len = str.length; i < len; i++) {
var uniStr = str.charCodeAt(i)
console.log('unistr = ' + uniStr + ',' + str.charAt(i))
if (uniStr >= 18868 && uniStr <= 40869) {
// 如果是中文
}
dataView[i] = uniStr
}
return buffer
}

微信小程序开发者回答:
%***:
中文的编码问题,你这应该是直接把utf8的中文字符转成16进制了,打印机一般是支持gb2312,我解决办法是,在服务端把中文转成gb2312以后再转16进制
%***:
请问你们可以用安卓手机连接到蓝牙打印机吗?
第***:
@%004A%004F%0045,感谢评论,我现在是测试阶段,直接写的固定中文,和服务端没交互。按照你的办法,我可以代码先将字符串中的中文gb2312,后将整个字符串转16进制也是可以的,这样说得通吗?
第***:
@%004A%004F%0045,我是iOS,用苹果手机是可以的,安卓没测
%***:
@第五日凌晨 是的。我们的一个功能也刚好涉及到蓝牙打印这块,只是现在还无法在安卓上面连接打印机,你们能在安卓连接上吗?如果可以连上的话,想请教一下
%***:
@第五日凌晨 嗯,苹果上测是没问题的
第***:
@%004A%004F%0045 明天我用安卓测一下,有结论再给你回复吧
王***:
iOS提供的只是低功耗蓝牙接口,你是在Mac上调试还是iOS真机上调试?
第***:
@王翊夫if mac和真机都试了,结果一样。我问过商家这款打印机不是低功耗,但是API可以用,我该怎么理解。
勇***:
@第五日凌晨 数字,字母你是怎么转换的,
本文网址:http://www.91bianli.com/weixinxiaochengxu/27569.html