收藏官网首页
查看: 9100|回复: 0

如何解决枚举类型数据点的值为中文的问题

3

主题

4

帖子

47

积分

新手上路

Rank: 1

积分
47
跳转到指定楼层
楼主
发表于 2015-6-10 10:36:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
校园创客福利
本帖最后由 Johnson 于 2016-1-7 19:14 编辑

在做微信应用开发(Web开发)的时候,经常会用到WebSocket方式与设备进行实时通讯,对于如下的枚举类型定义:
Mode: 0.制冷, 1.抽湿, 2. 通风
在发送控制指令时,可能会写成这样:
{"cmd":"c2s_write","data":{"did":"itE6covvbAguLxmpua3ec5","attrs": {"Mode": "抽湿"}}}
但这样是不工作的!因为没有以Unicode编码字符串如(\u62bd)
正确的写法是:
{"cmd":"c2s_write","data":{"did":"itE6covvbAguLxmpua3ec5","attrs": {"Mode": "\u62bd\u6e7f"}}}

对于Javascript可以使用以下两个函数进行Unicode编码和解码:

encode:
function encodeUTF8(str){      var temp = "",rs = "";      for(var i=0, len = str.length; i < len; i++)    {          temp = str.charCodeAt(i).toString(16);          rs  += "\\u"+ new Array(5-temp.length).join("0") + temp;      }      return rs;  }  
decode:
function decodeUTF8(str){      return str.replace(/(\\u)(\w{4}|\w{2})/gi, function($0,$1,$2){ return String.fromCharCode(parseInt($2,16)); });}




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表