细节1:如何将中文转为unicode和GB2312
发布于 12 年前 作者 zhs077 16602 次浏览 最后一次编辑是 8 年前

将中文转为unicode其实nodejs自带的模块就可以实现了。要实现转GB2312要借助iconv-lite模块。 转Uincode: var unicode = new Buffer(msg, ‘uCS2’); var unicodeHex = “”; for (var i = 0; i < unicode.length; i = i + 2) { unicodeHex += utils.toHex(unicode[i]) + utils.toHex(unicode[i + 1]); }

转为GB2312:

//将中文转化为GB2312 function chinese2Gb2312(data) { var gb2312 = iconv.encode(data.toString(‘UCS2’), ‘GB2312’); var gb2312Hex = “”; for (var i = 0; i < gb2312.length; ++i) { gb2312Hex += utils.toHex(gb2312[i]); } return gb2312Hex; }

注意js文件要保存为uft-8格式。不然结果是不对的

9 回复

utils.toHex 这个找不到在哪里,报错,要引入什么包吗

自己写的工具类而已

exports.pad = function (number, length, pos) { var str = “” + number; while (str.length < length) { //向右边补0 if (“r” == pos) { str = str + “0”; } else { str = “0” + str; } } return str; }

exports.toHex = function (chr, padLen) { if (null == padLen) { padLen = 2; } return this.pad(chr.toString(16), padLen); }

哦,我说怎么找不到,这样的话,字母数字不会被转换吧,在写一个压缩工具,因为在gbk页面中用到,所以要转一下

测试了一下,所有的都转码了,我只要代码中的中文字符进行转码

function enunicode(code){ var unicode=new Buffer(code,‘uCS2’); var uHex=’’; for(var i=0,l=code.length;i<l;i+=2){ uHex += utils.toHex(unicode[i]) + utils.toHex(unicode[i + 1]); } return uHex; }; 应该怎么改, 本人不才,第一次用node写工具

你要什么码转什么码

加我QQ436062598

解决了,用了一个笨方法

function enunicode(code){
code=code.replace(/[\u00FF-\uFFFF]/g,function($0){
		return '\\u'+$0.charCodeAt().toString(16);
});
return code;

};

回到顶部