欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS实现的汉字与Unicode码相互转化功能分析

程序员文章站 2023-11-21 18:30:52
本文实例讲述了js实现的汉字与unicode码相互转化功能。分享给大家供大家参考,具体如下: 有时候,我们在给后端传递变量的的值中有汉字,可能由于编码的原因,传递到后端后...

本文实例讲述了js实现的汉字与unicode码相互转化功能。分享给大家供大家参考,具体如下:

有时候,我们在给后端传递变量的的值中有汉字,可能由于编码的原因,传递到后端后变为乱码了。所以有时候为了省事或者其它特殊要求的时候,会把传递的汉字转换成unicode编码后再进行传递。

当然汉字转换成unicode编码,使用js的charcodeat()方法就可以。

'好'.charcodeat(0).tostring(16)
"597d"

这段代码的意思是,把字符'好'转化成unicode编码,tostring()就是把字符转化成16进制了

用法:charcodeat() 方法可返回指定位置的字符的 unicode 编码。这个返回值是 0 - 65535 之间的整数

语法:stringobject.charcodeat(index)

index参数必填,表示字符串中某个位置的数字,即字符在字符串中的下标。

注:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charcodeat() 返回 nan。

例如:

var str="hello world!"
document.write(str.charcodeat(1))
//结果:101
'好哦'.charcodeat(0).tostring(16)
"597d"
'好哦'.charcodeat(1).tostring(16)
"54e6"

要是想把unicode解码成字符呢?

要想对unicode解码的话,必须要用转义字符'\u'

'\u54e6'
"哦"

总结下:

js unicode是以十六进制代码外加开头\u表示的字符串。即\unnnn

unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。

下面先看一个简单的例子,汉字转化为unicode方法:

function tounicodefun(data){
 if(data == '' || typeof data == 'undefined') return '请输入汉字';
  var str ='';
  for(var i=0;i<data.length;i++){
   str+="\\u"+data.charcodeat(i).tostring(16);
  }
  return str;
}
var resultunicode = tounicodefun('中国'); // \u4e2d\u56fd
console.log(resultunicode);

unicode转化为汉字的方法:

function tochinesewords(data){
  if(data == '' || typeof data == 'undefined') return '请输入十六进制unicode';
  data = data.split("\\u");
  var str ='';
  for(var i=0;i<data.length;i++){
    str+=string.fromcharcode(parseint(data[i],16).tostring(10));
  }
  return str;
}
var resultchinesewords = tochinesewords("\u4e2d\u56fd");
console.log(resultchinesewords);//中国

在网上找到另外一个实现方式:

var gb2312unicodeconverter={
  tounicode:function(str){
    return escape(str).tolocalelowercase().replace(/%u/gi,'\\u');
  },
  togb2312:function(str){
    return unescape(str.replace(/\\u/gi,'%u'));
  }
};
var result = gb2312unicodeconverter.tounicode('中国'); //\u4e2d\u56fd
var result2 = gb2312unicodeconverter.tounicode(result); //%5cu4e2d%5cu56fd

下面实现汉字转unicode码:

function tounicode(s){
  return s.replace(/([\u4e00-\u9fa5]|[\ufe30-\uffa0])/g,function(newstr){
    return "\\u" + newstr.charcodeat(0).tostring(16);
  });
}

ps:这里再为大家提供几款unicode编码转换操作相关工具供大家参考使用:

在线unicode/中文转换工具:

native/unicode在线编码转换工具:

在线中文汉字/ascii码/unicode编码互相转换工具:

更多关于javascript相关内容可查看本站专题:《javascript编码操作技巧总结》、《javascript加密解密技巧汇总》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

希望本文所述对大家javascript程序设计有所帮助。