js进行Unicode编码转换
作者:翅膀的初衷 来源:本站原创 发布时间:2014-05-29 查看数:64078
我们在查看一些JS文件的时候,经常会看到一些下面类似的代码:
\u4f60\u597d\uff0c\u6781\u5ff5\u7f51\uff01
于是有很多同学表示很疑惑,不知道这是什么?
其实只要去掉\u再把余下的数字转换成十进制后就会发现,这是中文"你好,极念网!"几个字的unicode码,换句话说,这些"代码"是unicode码的一种十六制表示形式,它能被各大浏览器直接识别,
同时常见的还有:
你好,极念网!
它是unicode码的十进制现示,在Web中也常常见到,可以直接在浏览器中显示!
那么为什么我们要在Js文件中,把汉字进行处理呢?因为如果单独的JS文件中存在汉字,而正好JS文件本身的编码格式和网页文件格式不一致,就很容易出现JS乱码现象。
把汉字转换成16进制的表现形式,就不会存在此问题。
而Unicode码的十进制表示一般用于HTML中,有时也会用于数据库保存时对关键字进行替换。
今天在写一个JS类库的时候,需要把一引起汉字转换成\u之类的格式,于是写了几个转换类,在此分享给大家。
首先,因为这几种格式,我也不太清楚标准的名字应该叫什么,因为看chinaz上面,把 汉字转换成 你(十进制)的格式叫做 "ASCII转unicode",把汉字转换成 \u4f60 (十六进制)的格式 叫做"中文转unicode",因此,我也沿用它的称呼,如果不当,欢迎大家给我指出。
ASCII转Unicode
function ascii2Unicode(str){
if(!str){
return str;
}
var r = '';
for(var i=0;i<str.length;i++){
r+='&#' + str.charCodeAt(i)+';';
}
return r;
}
Unicode转ASCII
function unicode2Ascii(str){
var n = 0;
var r = '';
var m = 0;
//65535
for(var i=0;i<str.length;i++){
if(str.charAt(i)==='&'&& i < str.length-1 &&str.charAt(i+1)==='#'){
n=0;
for(var j=0;j<6;j++) {
m = i+2 + j;
if(m >= str.length){
break;
}
if(str.charAt(m)===';'){
n = j;
break;
}
}
if(n===0){
r += str.charAt(i);
}else{
r += String.fromCharCode(parseInt(str.substr(i+2,n)));
i+=n+2;
}
}else{
r += str.charAt(i);
}
}
return r;
}
中文转Unicode
function chinese2Unicode(str){
if(!str){
return str;
}
var r = '';
for(var i=0;i<str.length;i++){
r+='\\u' + str.charCodeAt(i).toString(16);
}
return r;
}
Unicode转中文
function unicode2Chinese(str){
var n = 0;
var r = '';
for(var i=0;i<str.length;i++){
if(str.charAt(i)==='\\'&& i+5 < str.length &&str.charAt(i+1)==='u'){
n = parseInt(str.substr(i+2,4),16);
if(!isNaN(n)){
r += String.fromCharCode(n);
i+=5;
}else{
r += str.charAt(i);
}
}else{
r += str.charAt(i);
}
}
return r;
}
演示地址:http://www.jiniannet.com/Page/unicode 大家以后也可以直接用本地址进行编码转换,喜欢的话,记得收藏一下。
另外,以上代码都是原创,大家要是转载的话请保留作者与本文链接!