收藏
回答

蓝牙打印机打印中文乱码


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

}





最后一次编辑于  2017-09-16
回答关注问题邀请回答
收藏

16 个回答

  • %004A%004F%0045
    %004A%004F%0045
    2017-09-16

    @第五日凌晨 嗯,苹果上测是没问题的

    2017-09-16
    有用
    回复
  • %004A%004F%0045
    %004A%004F%0045
    2017-09-16

    @第五日凌晨 是的。我们的一个功能也刚好涉及到蓝牙打印这块,只是现在还无法在安卓上面连接打印机,你们能在安卓连接上吗?如果可以连上的话,想请教一下

    2017-09-16
    有用
    回复
  • 第五日凌晨
    第五日凌晨
    2017-09-16

    @%004A%004F%0045,我是iOS,用苹果手机是可以的,安卓没测

    2017-09-16
    有用
    回复
  • 第五日凌晨
    第五日凌晨
    2017-09-16


    @%004A%004F%0045,感谢评论,我现在是测试阶段,直接写的固定中文,和服务端没交互。按照你的办法,我可以代码先将字符串中的中文gb2312,后将整个字符串转16进制也是可以的,这样说得通吗?
    2017-09-16
    有用
    回复
  • %004A%004F%0045
    %004A%004F%0045
    2017-09-16

    请问你们可以用安卓手机连接到蓝牙打印机吗?

    2017-09-16
    有用
    回复 1
    • 第五日凌晨
      第五日凌晨
      2019-05-30

      当初放弃安卓了

      2019-05-30
      回复
  • %004A%004F%0045
    %004A%004F%0045
    2017-09-16

    中文的编码问题,你这应该是直接把utf8的中文字符转成16进制了,打印机一般是支持gb2312,我解决办法是,在服务端把中文转成gb2312以后再转16进制

    2017-09-16
    有用
    回复

正在加载...

登录 后发表内容