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下的开发有点像,渐 ...
最新文章
- 找出数组中重复的数字---多思路
- 保研软件学院和计算机学院,西南大学计算机与信息科学学院·软件学院(专业学位)计算机技术保研细则...
- 企业搜索引擎开发之连接器connector(二十七)
- mysql @@version_MySQL数据库安装Version5.5
- 服务器新建文件命令,云服务器中新建文件夹命令
- 买苹果---动态规划
- Node.js的require()的工作原理
- 拓端tecdat|R语言如何做马尔可夫转换模型markov switching model
- CSS样式表初始化杂谈
- 毕业论文答辩开题报告PPT模板
- PHP教程5-安装PHPNow
- 对学生任务博客的评分练习
- 【本人秃顶程序员】Java面试题集(意思意思)
- 学计算机与学英语词汇,计算机专业常用英语词汇学习
- caffeine本地缓存的使用和详解
- SAP MM批次切换
- U盘格式化后数据能恢复吗?U盘格式化怎么恢复数据
- Java学习day05——方法及其调用重载
- Matlab过零补偿角,无刷直流电机反电动势过零检测及其相位补偿.pdf
- 一种基于卷积神经网络的数据驱动故障诊断方法