Johnson 发表于 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)); });}




页: [1]
查看完整版本: 如何解决枚举类型数据点的值为中文的问题