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

最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里脚本之家小编就跟大家分享一下这些资料

Unicode介绍

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。 Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。 Unicode 到目前为止所定义的五个平面中,第0平面(BMP)最为重要,其编码中文汉字范围为:4E00-9FBFCJK 统一表意符号 (CJK Unified Ideographs)

ASCII介绍

ASCII是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。 它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。 0-127 是7位ASCII 码的范围,是国际标准。至于汉字,不同的字符集用的ascii 码的范围也不一样,常用的汉字字符集有GB2312-80,GBK,Big5,unicode 等。 GB_2312 字符集是目前最常用的汉字编码标准。在这个标准中,每个汉字用2个字节来表示,每个字节的ascii码为 161-254 (16 进制A1 - FE),第一个字节 对应于 区码的1-94 区,第二个字节 对应于位码的1-94 位。

ASCII介绍

native2ascii是sun java sdk提供的一个工具。用来将别的文本类文件(比如*.txt,*.ini,*.properties,*.java等等)编码转为Unicode编码。为什么要进行转码,原因在于程序的国际化。 安装了jdk后,假如你是在windows上安装,那么在jdk的安装目录下,会有一个bin目录,其中native2ascii.exe正是native2ascii中文转unicode工具。 native2ascii的命令行的命名格式:native2ascii -[options] [inputfile [outputfile]]。 例如:native2ascii zh.txt u.txt:将zh.txt转换为Unicode编码,输出文件到u.txt。

本工具中汉字与Unicode转换采用PHP开发,支持十六进制和十进制表示,能够中文汉字和Unicode互转;默认情况下采用十六进制。

下面函数都需要用到的函数

?
1
2
3
4
5
6
7
8
function left_zero_4(str) {
             if (str != null && str != '' && str != 'undefined' ) {
                 if (str.length == 2) {
                     return '00' + str;
                 }
             }
             return str;
         }

中文汉字转Unicode

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function unicode(str){
             var value= '' ;
             for ( var i = 0; i < str.length; i++) {
                 value += '\\u' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16));
             }
             return value;
         }
         function left_zero_4(str) {
             if (str != null && str != '' && str != 'undefined' ) {
                 if (str.length == 2) {
                     return '00' + str;
                 }
             }
             return str;
         }

Unicode转中文汉字、ASCII转换Unicode

?
1
2
3
4
5
6
7
8
9
10
11
12
13
function reconvert(str){
             str = str.replace(/(\\u)(\w{1,4})/gi, function ($0){
                 return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g, "$2" )),16)));
             });
             str = str.replace(/(& #x)(\w{1,4});/gi,function($0){
                 return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g, "$2" ),16));
             });
             str = str.replace(/(& #)(\d{1,6});/gi,function($0){
                 return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g, "$2" )));
             });
             
             return str;
         }

Unicode转换ASCII

?
1
2
3
4
5
6
function unicode1(str){
     var value= '' ;
     for ( var i = 0; i < str.length; i++)
         value += '&#' + str.charCodeAt(i) + ';' ;
     return value;
}

中文转换&#XXXX

?
1
2
3
4
5
6
7
function ascii(str){
     var value= '' ;
     for ( var i = 0; i < str.length; i++) {
         value += '\&#x' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16))+ ';' ;
     }
     return value;
}

完整的可以测试的代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
         <script type= "text/javascript" >
         function a(pChoice){
             var inputEle = document.getElementById( 'input_area' );
             var outputEle = document.getElementById( 'output_area' );
             switch (pChoice){
                 case "CONVERT_FMT1" :
                     outputEle.value = ascii(inputEle.value);
                     break ;
                 case "CONVERT_FMT2" :
                     outputEle.value = unicode(inputEle.value);
                     break ;
                 case "CONVERT_FMT3" :
                     outputEle.value = unicode1(inputEle.value);
                     break ;
                 case "RECONVERT" :
                     outputEle.value = reconvert(inputEle.value);
                     break ;
             }
         }
         function ascii(str){
             var value= '' ;
             for ( var i = 0; i < str.length; i++) {
                 value += '\&#x' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16))+ ';' ;
             }
             return value;
         }
         function unicode(str){
             var value= '' ;
             for ( var i = 0; i < str.length; i++) {
                 value += '\\u' + left_zero_4(parseInt(str.charCodeAt(i)).toString(16));
             }
             return value;
         }
         function left_zero_4(str) {
             if (str != null && str != '' && str != 'undefined' ) {
                 if (str.length == 2) {
                     return '00' + str;
                 }
             }
             return str;
         }
         function unicode1(str){
             var value= '' ;
             for ( var i = 0; i < str.length; i++)
                 value += '&#' + str.charCodeAt(i) + ';' ;
             return value;
         }
         function reconvert(str){
             str = str.replace(/(\\u)(\w{1,4})/gi, function ($0){
                 return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\w{1,4})/g, "$2" )),16)));
             });
             str = str.replace(/(& #x)(\w{1,4});/gi,function($0){
                 return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\w{1,4})(%3B)/g, "$2" ),16));
             });
             str = str.replace(/(& #)(\d{1,6});/gi,function($0){
                 return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\d{1,6})(%3B)/g, "$2" )));
             });
             
             return str;
         }
         </script>
 
<style>
textarea {
  width: 100%;
  height: 200px;
  resize:vertical;
  border: 1px solid #CCC;
  /*border-radius:8px;*/
  padding:4px;
  box-shadow: 2px 2px 5px #d3d6da;
  -moz-box-shadow: 2px 2px 5px #d3d6da;
}
</style>
提供一个中文汉字Unicode互转、 ASCII与Unicode互转的在线工具,方便帮助你解决中文的乱码问题。
 
       <div class= 'divider' ></div>
       <textarea id= "input_area" name= "input_area" placeholder= "贴入要处理的Unicode或Ascii字符" value= "" >jb51.net - 脚本之家</textarea>
             <div class= 'row' >
                 <button onclick= "javascript:a('CONVERT_FMT2');" >中文汉字转Unicode</button>
                 <button onclick= "javascript:a('RECONVERT');" >Unicode转中文汉字</button>     
                 <button onclick= "javascript:a('RECONVERT')" >ASCII转换Unicode</button>
                 <button onclick= "javascript:a('CONVERT_FMT3');" >Unicode转换ASCII</button>
                 <button onclick= "javascript:a('CONVERT_FMT1');" >中文转换& #XXXX</button>
             </div>
<textarea name= "output_area" id= "output_area" onclick= "this.select();" placeholder= "处理之后的Unicode或Ascii字符" value= "" ></textarea>

这里就介绍这么多,具体的大家可以多测试一下。

转载于:https://www.cnblogs.com/oshoh/p/8520597.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值