js中utf8和中文互转的方法
中文转utf8
function EncodeUtf8(s1)
{var s = escape(s1);var sa = s.split("%");var retV ="";if(sa[0] != ""){retV = sa[0];}for(var i = 1; i < sa.length; i ++){if(sa[i].substring(0,1) == "u"){retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)));}else retV += "%" + sa[i];}return retV;
}
function Str2Hex(s)
{var c = "";var n;var ss = "0123456789ABCDEF";var digS = "";for(var i = 0; i < s.length; i ++){c = s.charAt(i);n = ss.indexOf(c);digS += Dec2Dig(eval(n));}//return value;return digS;
}
function Dec2Dig(n1)
{var s = "";var n2 = 0;for(var i = 0; i < 4; i++){n2 = Math.pow(2,3 - i);if(n1 >= n2){s += '1';n1 = n1 - n2;}elses += '0';}return s;
}
function Dig2Dec(s)
{var retV = 0;if(s.length == 4){for(var i = 0; i < 4; i ++){retV += eval(s.charAt(i)) * Math.pow(2, 3 - i);}return retV;}return -1;
}
function Hex2Utf8(s)
{var retS = "";var tempS = "";var ss = "";if(s.length == 16){tempS = "1110" + s.substring(0, 4);tempS += "10" + s.substring(4, 10); tempS += "10" + s.substring(10,16); var sss = "0123456789ABCDEF";for(var i = 0; i < 3; i ++){retS += "%";ss = tempS.substring(i * 8, (eval(i)+1)*8);retS += sss.charAt(Dig2Dec(ss.substring(0,4)));retS += sss.charAt(Dig2Dec(ss.substring(4,8)));}return retS;}return "";
}
utf8转中文
// UTF8编码转成汉字字符串
function revertUTF8(szInput) {var x,wch,wch1,wch2,uch="",szRet="";for (x=0; x<szInput.length; x++) {if (szInput.charAt(x)=="%") {wch =parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);if (!wch) {break;}if (!(wch & 0x80)) {wch = wch;} else if (!(wch & 0x20)) {x++;wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);wch = (wch & 0x1F)<< 6;wch1 = wch1 & 0x3F;wch = wch + wch1;} else {x++;wch1 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);x++;wch2 = parseInt(szInput.charAt(++x) + szInput.charAt(++x),16);wch = (wch & 0x0F)<< 12;wch1 = (wch1 & 0x3F)<< 6;wch2 = (wch2 & 0x3F);wch = wch + wch1 + wch2;}szRet += String.fromCharCode(wch);} else {szRet += szInput.charAt(x);}}return(szRet);
}
测试
var utf = EncodeUtf8("你好");var uni = revertUTF8(utf);console.log('utf:'+utf + ' '+'uni:' + uni);输出:monitor_pd.js:159 utf:%E4%BD%A0%E5%A5%BD uni:你好
js中utf8和中文互转的方法相关推荐
- golang中utf8和汉字互转
golang中utf8和汉字互转 package mainimport ("fmt""strconv""strings" )func mai ...
- php 字母数字混合排序,JavaScript_基于JS实现数字+字母+中文的混合排序方法,在上篇文章给大家介绍了JavaScr - phpStudy...
基于JS实现数字+字母+中文的混合排序方法 在上篇文章给大家介绍了JavaScript sort数组排序方法和自我实现排序方法小结,用自己的方法实现了数字数组的排序. 当然,实际运用中,我还是会使用s ...
- 开发chrome 插件, background.js中 console log 看不到解决方法
开发chrome 插件, background.js中 console log 看不到解决方法 参考文章: (1)开发chrome 插件, background.js中 console log 看不到 ...
- js中的数组Array定义与sort方法使用示例
js中的数组Array定义与sort方法使用示例 Array的定义及sort方法使用示例 Array数组相当于java中的ArrayList 定义方法: 1:使用new Array(5 )创建数 ...
- vue watch 修改滚动条_Vue.js 中滚动条始终定位在底部的方法
Vue.js 中滚动条始终定位在底部的方法 发布于 2020-2-23| 复制链接 分享一篇关于vue 中滚动条始终定位在底部的方法,具有很好的参考价值,希望对大家有所帮助.一起跟随小妖过来看看吧 滚 ...
- new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解
new Date将字符串转化成日期格式 兼容IE,ie8如何通过new Date将字符串转化成日期格式,js中如何进行字符串替换, replace() 方法详解 //获得年月日时分秒 //传入日期// ...
- RStudio控制台(console)中出现少量中文乱码的解决方法
RStudio控制台(console)中出现少量中文乱码的解决方法 参考文章: (1)RStudio控制台(console)中出现少量中文乱码的解决方法 (2)https://www.cnblogs. ...
- 中字符转换中文乱码的处理方法
这两天在学习使用jni,在java程序中,调用海量词典的dll.利用jni的GetStringChars函数和NewString函数时,遇到了中文乱码的问题,折腾了一个晚上.查阅了一些资料,总结如下: ...
- Firefox/Chrome下flash的wmode参数设为opaque或transparent时输入文本框中无法输入中文汉字的解决方法
一.前言 这段时间做个项目,要涉及到flash开发.真悲催,之前没有接触过flash开发,于是找个哥们临时教了一下Adobe Flash CS5 的使用方法,感觉还蛮简单,所见即所得,和MFC下的开发 ...
- Firefox/Chrome下flash的wmode参数设为opaque或transparent时输入文本框中无法输入中文汉字的解决方法...
这段时间做个项目,要涉及到flash开发.真悲催,之前没有接触过flash开发,于是找个哥们临时教了一下Adobe Flash CS5 的使用方法,感觉还蛮简单,所见即所得,和MFC下的开发有点像,渐 ...
最新文章
- Tensorflow函数——tf.variable_scope()
- 小程序json字符串转 json对象 { name :你好} 转成 { name :你好}
- vscode 如何实时显示html文件?
- java string rt_如何使jvm加载我的java.lang.String而不是rt.jar中的那个
- http get post java_java发送http的get、post请求实现代码
- Javascript动态执行问题浅析
- 「雕爷学编程」Arduino动手做(19)—震动报警模块
- 大学二级计算机基础知识,浙江省大学生计算机基础知识与应用能力等级考试二级(V......
- Java — 如何产生随机数(Random类)
- Ubuntu配置机顶盒踩坑记录(Airplay/DLNA/UPuP/Miracast)
- linux 字幕制作工具,字幕制作工具
- 计算机一个小键盘按不出来怎么办,巧妙解决电脑键盘右边的数字键失灵问题
- vue+element表格 苹果自带浏览器兼容问题
- dax-自定义周做同比和环比
- 大学生静态HTML网页源码 我的校园网页设计成品 学校班级网页制作模板 web课程设计 dreamweaver网页作业
- 【文献阅读】RL经典:Benchmarking Deep Reinforcement Learning for Continuous Control
- hdwiki的php架构,齐博CMS(原php168)整合百科系统(HDwiki)手记
- 关于类加载机制,你知道多少
- 天宝营养冲刺深交所:年营收12.5亿 拟募资7亿
- 殷墟申请世界文化遗产成功