如何解决枚举类型数据点的值为中文的问题
本帖最后由 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]