CNode

细节1:如何将中文转为unicode和GB2312

Zzhs077发布于14 年前最后回复13 年前9 回复17273 浏览0 收藏

将中文转为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)

A
ahmzj#1·13 年前

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

A
ahmzj#2·13 年前

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写工具

A
ahmzj#5·13 年前

解决了,用了一个笨方法

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

};

A
ahmzj#6·13 年前

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

Z
zhs077#7·13 年前

自己写的工具类而已

Z
zhs077#8·13 年前
引用 ahmzjutils.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); }

A
ahmzj#9·13 年前

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

参与回复
登录后即可参与回复。登录