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/中文转换工具:
http://tools.jb51.net/transcoding/unicode_chinese

Native/Unicode在线编码转换工具:
http://tools.jb51.net/transcoding/native2unicode

在线中文汉字/ASCII码/Unicode编码互相转换工具:
http://tools.jb51.net/transcoding/chinese2unicode

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

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

(0)

相关推荐

  • 无语,javascript居然支持中文(unicode)编程!

    很早以前发现对于一个 html 元素, id 可以是中文的,而且用 getElementById 方法可以正确取到dom 小弟孤陋寡闻,今天才知道 ie居然支持 javascript中文编程 <input type=button value="gorush" id="阿舜"> <script> function 阿舜::onclick(){alert(this.value)} //c++风格 function 阿舜::onmouseout()

  • 如何让Jackson JSON生成的数据包含的中文以unicode方式编码

    我们都知道,Jackson JSON以高速.方便和灵活著称.之前的文章中介绍过使用注解的形式来规定如何将一个对象序列化成JSON的方法,以及如何将一个JSON数据反序列化到一个对象上.但是美中不足的一点就是对于中文的处理.当然我说的美中不足是在默认情况下,Jackson JSON不会将中文等非ASCII字符转换为\uFFFF这样的形式来显示.也就是说默认情况下会显示为{"name":"张三"}而不是{"name":"\u5F20\u4E

  • js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码

    最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里我们小编就跟大家分享一下这些资料 Unicode介绍 Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编码. Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求. Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案.Unicode用数字0-0x10FFFF来映射这些字符,最多

  • Json_encode防止汉字转义成unicode的方法

    大家都知道,json_encode通常会把json中的汉字转义成unicode,但是这并不一定是我们想要的.有时候,我们需要获得汉字形式的json字符串,比如需要获得gbk编码的json字符串(只要把汉字形式的字符串转码就可以得到了).有什么好办法么? php官方听到了这个需求,并提供了一种可靠的解决方案:JSON_UNESCAPED_UNICODE.这个参数可以保证json_encode不再将汉字转为unicode. 似乎这样就解决了?当我们高高兴兴的用这个参数的时候,发现并没有什么卵用.仔细

  • JS将unicode码转中文方法

    原理,将unicode的 \u 先转为 %u,然后使用unescape方法转换为中文. <script type="text/javascript"> var str = "\u7434\u5fc3\u5251\u9b44\u4eca\u4f55\u5728\uff0c\u6c38\u591c\u521d\u6657\u51dd\u78a7\u5929\u3002"; document.write(unescape(str.replace(/\\u/g,

  • js unicode 编码解析关于数据转换为中文的两种方法

    复制代码 代码如下: var str = "\\u6211\\u662Funicode\\u7F16\\u7801"; 关于这样的数据转换为中文问题,常用的两种方法. 1. eval 解析 复制代码 代码如下: str = eval("'" + str + "'"); // "我是unicode编码" 2. unescape 解析 复制代码 代码如下: str = unescape(str.replace(/\\u/g, &q

  • 解决JSON.stringify()自动将中文转译成unicode的问题

    最近在工作中,发现在IE8下JSON.stringify()自动将中文转译为unicode编码,原本选择的中文字符,传到后台变为了unicode编码,即\u****的形式.查找资料后发现,与标准的JSON.stringify()不同,IE8内置的JSON.stringify()会自动将编码从utf-8转为unicode编码,导致出现这种类似于乱码的情况. 解决方法分为两种,第一种是后台接收到数据之后,将该数据再进行一次转码,重新转为utf-8,然后再保存到数据库中,这样,再次从数据库取出传给前端

  • javascript unicode与GBK2312(中文)编码转换方法

    复制代码 代码如下: var GB2312UnicodeConverter = {    ToUnicode: function (str) {        return escape(str).toLocaleLowerCase().replace(/%u/gi, '\\u');    }    , ToGB2312: function (str) {        return unescape(str.replace(/\\u/gi, '%u'));    }}; var str = '

  • JS实现汉字与Unicode码相互转换的方法详解

    本文实例讲述了JS实现汉字与Unicode码相互转换的方法.分享给大家供大家参考,具体如下: js文件中,有些变量的值可能会含有汉字,画面引入js以后,有可能会因为字符集的原因,把里面的汉字都变成乱码.后来发现网上的一些js里会把变量中的汉字都表示成"\u"开头的16进制编码,这样应该可以解决上面的问题. 最近有时间在网上查找了一下实现方式,一种比较大众化的: function tounicode(data) { if(data == '') return '请输入汉字'; var s

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

    本文实例讲述了JS实现的汉字与Unicode码相互转化功能.分享给大家供大家参考,具体如下: 有时候,我们在给后端传递变量的的值中有汉字,可能由于编码的原因,传递到后端后变为乱码了.所以有时候为了省事或者其它特殊要求的时候,会把传递的汉字转换成Unicode编码后再进行传递. 当然汉字转换成unicode编码,使用JS的charCodeAt()方法就可以. '好'.charCodeAt(0).toString(16) "597d" 这段代码的意思是,把字符'好'转化成Unicode编码

  • Java编程将汉字转Unicode码代码示例

    上一次接触到编码的知识,还是上大学的时候,那时候学的是通信工程专业,有关编码的内容,不记得是在通信原理还是信息论与编码里面学到的了.却依然记得那个信息论与编码的老师,最喜欢吃的是尖椒肥肠盖饭,不知道是尖椒肥肠吃多了还是太聪明的缘故,三十多岁就开始拜顶了.那四年真是一段难忘的回忆... 话不多说,咱们进入正题.这里是一个简单的Java编程将汉字转Unicode码代码示例,下面是代码: package me.socketthread; public class ToUnicode { /** * @

  • js实现unicode码字符串与utf8字节数据互转详解

    js的string变量存储字符串使用的是unicode编码,要保存时必须选择其他编码后进行传输,比如转成utf-8,utf-32等.存储到数据库中为utf-8编码,读取出来如何转换成正确的字符串就成了问题.现在给出解决方案,可以正确支持中文.emoji表情.英文混合的字符串编码互转. /** * Created by hdwang on 2019/1/28. */ var convertUtf8 = (function() { /** * unicode string to utf-8 * @p

  • js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XX函数代码

    最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里我们小编就跟大家分享一下这些资料 Unicode介绍 Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编码. Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求. Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案.Unicode用数字0-0x10FFFF来映射这些字符,最多

  • JS验证全角与半角及相互转化的介绍

    1.什么是全角和半角? 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节. 汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符.在全角中,字母和数字等与汉字一样占据着等宽的位置. 半角:是指一个字符占用一个标准的字符位置.半角占一个字节. 半角就是 ASCII 方式的字符,在没有汉字输入法起作用的时候,输入的字母.数字和字符都是半角的. 每个半角字符只占用一字节的空间(一字节有8位,共256个编码空间).汉语.日

  • 文本 Unicode 码加密与解密 代码

    在线测试 文本 Unicode 码加密与解密 文本 Unicode 码加密与解密 用途:   1. 加密中文信函:   2. 秘密信息:   3. BBS等上面发布加密留言:   4. 网页加密.   此类加密解密是通过 Unescape 脚本的转换实现的,中文文字太多会导致将页面代码膨胀. 使用方法:   加密:源代码粘贴在下面的框内,如果您对 Java 教熟,也可只对部分内容加密,在对应输出部分使用 outword() 即可.注意:请在加密前先备份您的网页   解密方法:将引号内的乱码贴入按

  • 基于python的汉字转GBK码实现代码

    如图,"广"的编码为%B9%E3,暂且把%B9称为节编码,%E3为字符编码(第二编码). 思路: 从GBK编码页面收集汉字 http://ff.163.com/newflyff/gbk-list/ 从实用角度下手,只选取"● GBK/2: GB2312 汉字"这一节,共3755个汉字. 看规律:小节编码从B0-D7,而针对汉字的编码从A1-FE,即16*6-2=94,非常有规律性. 第一步:把常用的汉字用python提取出来,按顺序存到一个字典文件里面,汉字用空格分

  • android中一些特殊字符(如:←↑→↓等箭头符号)的Unicode码值

    在项目中,有时候在一些控件(如Button.TextView)中要添加一些符号,如下图所示:                         这个时候可以使用图片的方式来显示,不过这些可以直接使用Unicode码就直接显示出来了. 4个箭头图标的代码如下: <RelativeLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=&

随机推荐