资讯专栏INFORMATION COLUMN

JS基础篇--JS之汉字与Unicode码的相互转化

gaara / 3419人阅读

摘要:有时候,我们在给后端传递变量的的值中有汉字,可能由于编码的原因,传递到后端后变为乱码了。当然汉字转换成编码,使用的方法就可以。

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

unicode转化为汉字的方法:

function toChineseWords(data){
    if(data == "" || typeof data == "undefined") return "请输入十六进制unicode";
    data = data.split("u");
    var str ="";
    for(var i=0;i

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

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("中国"); //u4e2du56fd
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); 
    }); 
} 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/89836.html

相关文章

  • Node闲谈Buffer

    摘要:闲谈系列不涉及具体的讲解,只会勾勾画画一些自己认为比较重要的特性。我们一般认为用两个字节位表示,并且完全囊括了字符集。将其转换成进制就是只是表示它们是码。三的读取和写入相关重要的只有能够读写,才能够显示其存在的价值。 原文地址:http://www.cnblogs.com/DeanCh... 在刚接触Nodejs的时候,有些概念总让学前端的我感到困惑(虽然大学的时候也是在搞后端,世界上...

    Godtoy 评论0 收藏0
  • JS基础-- JS对全角半角的验证,相互转化以及介绍

    摘要:全角占两个字节。汉字字符和规定了全角的英文字符及国标中的图形符号和特殊字符都是全角字符。在全角中,字母和数字等与汉字一样占据着等宽的位置。全角转换为半角 1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置。全角占两个字节。 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。在全角中,字母和数字等...

    YancyYe 评论0 收藏0
  • 编码-1

    摘要:关于的参考知乎上的一个回答传送门以我自己的理解就是首先得分清楚编码问题在不同的环境中,编码是不同的。但是如果换成的是知乎的话,则表示的是将这个汉字用编码的形式存放。 文章启发来源: cnblogs 阮一峰 知乎 字符编码方式 note from wiki: 从维基百科上得到的一些理解,一个字符的unicode编码是确定的,但是在传输过程中,由于不同系统平台的设计不一致,所以对uni...

    IamDLY 评论0 收藏0
  • Linux下文件名长度限制

    摘要:下文件名长度限制出现场景在迭代中有一个需求是将文件名修改为所有班级的名称集合,出现的班级过多导致的文件名过长在下无法创建文件和文件夹的情况解决方式经过查证,中文件名最长为字符,文件路径最大长度为字符。这是被编码方案决定的,通过来指定。 Linux下文件名长度限制 出现场景:在迭代中有一个需求是将pdf文件名修改为所有班级的名称集合,出现的班级过多导致的文件名过长在linux下无法创建文...

    entner 评论0 收藏0

发表评论

0条评论

gaara

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<