admin管理员组文章数量:1122919
javascript #x开头,#开头,\x开头,%开头 转中文
目录
- 关于:js提供的函数
- 1、js编码有关函数
- 1.1 unicode编码
- 1.2 utf-8编码
- 1.3 进制方法
- 1.4 编码方法
- 1.4 补充
- 2、中文 和 &#x 互转
- 2.1 中文 转 &#x
- 2.2 &#x 转中文
- 3、中文和 &# 互转
- 3.1 中文转 &#
- 3.2 &# 转 中文
- 4 中文 和 \x 互转
- 4.1 中文 转 \x
- 4.2 \x 转 中文
- 5、中文和unicode 互转
- 5.1 中文转unicode
- 5.2 unicode转中文
tips:𣇉
是两个unicode “\uD84C\uDDC9”
关于:js提供的函数
js默认是按照unicode来编码中文的,比如
String.fromCharCode(55372)+String.fromCharCode(56777) =>“𣇉” //自动组合unicode
var a="\u4e2d\u6587" => 中文 //自动识别,a就是中文
var x="\xE4\xB8\xAD\xE6\x96\x87"; =>“ä¸æ–‡” //js自动识别\x后默认按unicode组合,所以乱码,因为是utf8的字节
var m="%"+x.charCodeAt().toString(16)+"%"+x.charCodeAt(1).toString(16)+"%"+x.charCodeAt(2).toString(16);
decodeURI(m)=>“中” 结果出来 按照utf8来解码
1、unicode编码// 说明\x只能js中识别escape("\x61")=>"a" \x十六进制,ascii范围是输出ascii字符escape("中文")=> "%u4E2D%u6587" 则输出中文的unicode码 unicode 转中文//说明:fromCharCode的参数是unicode码unescape("%u4E2D%u6587")=> "中文" String.fromCharCode(0x4e2d) =>"中" 单个unicode转中文String.fromCharCode(55372,56777) =>"𣇉" 多个unicode转中文String.fromCharCode(97)=> "a"js默认是按照
2、取码值"中".charCodeAt(0)=>20013 中文则是unicode十进制 码值"a".charCodeAt()=>97 字符的ascii码值 3、utf-8编码编码encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()'encodeURI("a") => "a"encodeURI("中文") => "%E4%B8%AD%E6%96%87" utf8字节编码encodeURI("𣇉") => "%F0%A3%87%89" 占4字节utf8解码decodeURI("%e4%b8%ad") =>"中" //会按照utf字节格式识别来编码4、html编码如下形式在网页中会自动编码,同 &>等类似中文 //中文 &#x后跟unicode的十进制数�� // 𣇉 &# 后跟unicode的十六进制数5、utf8-unicode->中文
1、js编码有关函数
1.1 unicode编码
escape("中文") => "%u4E2D%u6587""中".charCodeAt(0).toString(16) =>"4e2d""文".charCodeAt().toString(16) =>"6587"String.fromCharCode(0x4e2d) =>"中"String.fromCharCode(55372,56777) =>"𣇉" =>escape("𣇉")=>"%uD84C%uDDC9" =>"\uD84C\uDDC9"用两个unicode表示一个汉字 “𣇉”
1.2 utf-8编码
encodeURI("中文") => "%E4%B8%AD%E6%96%87"
1.3 进制方法
Number("0xE4") => 228=>0xE4Number(228).toString(16) => "e4"escape("\x61") => "a""a".charCodeAt(0) => 97"a".charCodeAt(0).toString(16) => "61"
1.4 编码方法
//escape是进行unicode编码
escape("&") => %26
unescape("%26123") -> &123escape("确")->"%u786E"
unescape(%u786E) ->确//encodeURI(Component)是对地址编码以便兼容所有浏览器ascii模式
encodeURI方法不会对下列字符编码 ASCII字母 数字 ~!@#$&*()=:/,;?+'
encodeURIComponent方法不会对下列字符编码 ASCII字母 数字 ~!*()'//适合url地址
//编码后地址可识别
encodeURI(" =&")=>"=&";//适合参数编码
//因为编码后不影响地址
encodeURIComponent(" =&")=>"https%3A%2F%2Fblog.csdn%2Fhvang1988%3Fa%20%3D%26"//举例如下:var a=encodeURI("a=b");// 编码后会影响地址解析console.log(a) //a=b a=encodeURIComponent("a=b");//编码后不影响地址,所以适合对参数编码然后附加到地址中// =a%3Db 这种才是后台需要的console.log(a); //a%3Db
1.4 补充
&#后跟unicode 十进制
&#x 后跟的是unicode 十六进制
% 后跟16进制 比如escape("&") 为%26 而&的ascii为36
2、中文 和 &#x 互转
中文
在html标签中会自动编码为汉字,和
类似
2.1 中文 转 &#x
过程:
中文=>escape("中文") => "%u4E2D%u6587" =>把%u替换成 &#x即可 ,因为后边跟的都是十六进制=> "中文"
js实现:
function code(str) {var result = "";for (var i = 0; i < str.length; i++) {result += "&#x" + str.charCodeAt(i).toString(16)+";";}return result;
}//测试
console.log(code("中文")); //中文
2.2 &#x 转中文
过程:
中文 => &#x替换为%u =>%u4E2D%u6587 =>unescape("%u4E2D%u6587") =>中文
js实现:
var str="中文";
function code2(str) {var result = "";result=str.replace(/&#x([a-zA-Z0-9]+);{0,1}/g,(substring,$1)=>{//console.log(substring+"arg="+arg);return "%u"+$1;});return unescape(result);
}
console.log(code2(str)); //中文
3、中文和 &# 互转
使用 .charCodeAt可以获取unicode码
tip:
��
在html标签中会自动编码为汉字,和
类似在线互转(Unicode和ASCII):.aspx
3.1 中文转 &#
过程:
中文
=>找到unicode十进制再前缀&#即可
=>"&#"+"中".charCodeAt(0)+";"+"&#"+"文".charCodeAt(0) +";"
=>"中文"
js实现:
function code(str) {var result = "";for (var i = 0; i < str.length; i++) {result += "&#" + str.charCodeAt(i)+";";}return result;
}//测试
console.log(code("中文")) //中文
3.2 &# 转 中文
过程:
中文
=> 去除unicode [20013,25991]
=>把字节编码为字符集汉字(utf8)
=>中文
js实现:
function code(str) {var arry = str.match(/&#(\d+);/g);var result = "";for (var i = 0; i < arry.length; i++) {result += String.fromCharCode(arry[i].replace(/[&#;]/g, ''))}return result;
}
//测试
console.log(code("中文")) //𣇉
//补充
String.fromCharCode(55372,56777) //𣇉
String.fromCharCode(55372,56777,20013,25991)// 𣇉中文
String.fromCharCode("u") => "\u0000" //非数字返回 "\u0000"
4 中文 和 \x 互转
encodeURI会进行utf8按字节编码,比如
encodeURI(“𣇉”) =>"%F0%A3%87%89" 和\x也是按字节 异曲同工。
4.1 中文 转 \x
过程:
encodeURI("中文") => "%E4%B8%AD%E6%96%87" => %替换为\x=> \xE4\xB8\xAD\xE6\x96\x87补充:\x一般是其他程序产生,而不是js
js实现:
function code(str) {return encodeURI(str).replace(/%/g,"\\x");
}
var x="中文";
console.log(code(x)); //\xE4\xB8\xAD\xE6\x96\x87
4.2 \x 转 中文
过程:
\xE4\xB8\xAD\xE6\x96\x87=>替换\x为% =>%E4%B8%AD%E6%96%87=>decodeURI("%E4%B8%AD%E6%96%87") => 中文
js实现:
function code(str) {return decodeURI(str.replace(/\\x/g,"%"));
}
var x="\\xE4\\xB8\\xAD\\xE6\\x96\\x87";
console.log(code(x)); //中文
5、中文和unicode 互转
使用escape和unescape 进行unicode 转码
在线互转(中文和unicode):/
5.1 中文转unicode
过程 :
escape("中文") => "%u4E2D%u6587" =>替换%为\u即可=>"\u4E2D\u6587"
js实现:
function code(str) {var result="";for (var i = 0; i < str.length; i++) {var tmp="00" + str.charCodeAt(i).toString(16);result+="\\u"+tmp.slice(-4);}return result;
}console.log(code("中文"));//\u4e2d\u6587
5.2 unicode转中文
过程 :
js中识别unicode
比如var a="\u4e2d\u6587" //a就是中文"\\u4e2d\\u6587"
=>"%u4e2d%u6587"
=>unescape("%u4e2d%u6587")
=>中文
js实现:
function code2(str) {var b=str.replace(/\\/g,"%");console.log(b)return unescape(b);
}//测试
console.log(code2("\\u4e2d\\u6587"));
本文标签: javascript x开头开头x开头开头 转中文
版权声明:本文标题:javascript #x开头,#开头,x开头,%开头 转中文 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1730991344a1555077.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论