JS实现unicode和UTF-8互转

时间:2022-04-08 23:12:39

有一设备,为短信网关。需将PC送过来的UTF-8转换成UNICODE才能将内容通过短信发送出去,同样,接收到的短信为unicode编码,也许转换成UTF-8才能在PC端软件显示出来。程序很简单,只是走了不少弯路:



//unicode为1个接收数据,串口收到的字符编码放在该数组中
function UnicodeToUtf8(unicode) {
var uchar;
var utf8str = "";
var i;

for(i=0; i<unicode.length;i+=2){
uchar = (unicode[i]<<8) | unicode[i+1]; //UNICODE为2字节编码,一次读入2个字节
utf8str = utf8str + String.fromCharCode(uchar); //使用String.fromCharCode强制转换
}
return utf8str;
}


function Utf8ToUnicode(strUtf8) {
var i,j;
var uCode;
var temp = new Array();

for(i=0,j=0; i<strUtf8.length; i++){
uCode = strUtf8.charCodeAt(i);
if(uCode<0x100){ //ASCII字符
temp[j++] = 0x00;
temp[j++] = uCode;
}else if(uCode<0x10000){
temp[j++] = (uCode>>8)&0xff;
temp[j++] = uCode&0xff;
}else if(uCode<0x1000000){
temp[j++] = (uCode>>16)&0xff;
temp[j++] = (uCode>>8)&0xff;
temp[j++] = uCode&0xff;
}else if(uCode<0x100000000){
temp[j++] = (uCode>>24)&0xff;
temp[j++] = (uCode>>16)&0xff;
temp[j++] = (uCode>>8)&0xff;
temp[j++] = uCode&0xff;
}else{
break;
}
}
temp.length = j;
return temp;
}