用JS解析GBK编码的中文

背景

在好久远的VM页面代码(2014年的代码)中进行落数,须要传一个keyWord(搜索关键词)参数,后端数据中没有返回,其余地方也无从获取,前端考虑从页面url中获取,经过通常前端方法进行解析后,并无什么卵用。javascript

问题剖析

看了下页面的编码格式是gbk,返回的是gbk的编码,这种编码js是没法直接解析的,只能建立一个html节点,字符放进去而后取出来应该才能够。css

问题解决

用script标签来解析,其实就是须要让浏览器能识别这个gbk编码,由于js自己没有gbk编码转换的html

代码

function gbkconvert(gbkStr, callback) {
  var script = document.createElement('script');
  script.id = 'gbkconvert';
  script.src = 'data:text/javascript;charset=gbk,gbkconvertCb("' + gbkStr + '");';
  document.body.appendChild(script);
  window.gbkconvertCb = (res) => {
    callback && callback(res);
  };
}

gbkconvert('%CE%D2%CA%C7gbk%B1%E0%C2%EB',(res) => {
    console.log(res);
})
复制代码

相关拓展

data类型的Url大体有下面几种形式。前端

data:,<文本数据>

data:text/plain,<文本数据>

data:text/html,<html代码>

data:text/html;base64,<base64编码的html代码>

data:text/css,<css代码>

data:text/css;base64,<base64编码的css代码>

data:text/javascript,<javascript代码>

data:text/javascript;base64,<base64编码的javascript代码>

data:image/gif;base64,base64编码的gif图片数据

data:image/png;base64,base64编码的png图片数据

data:image/jpeg;base64,base64编码的jpeg图片数据

data:image/x-icon;base64,base64编码的icon图片数据
复制代码

data格式的Url最直接的好处是,这些Url本来会引发一个新的网络访问,由于那里是一个网页的地址,如今不会有新的网络访问了,由于如今这里是网页的内 容。这样作,会减小服务器的负载,固然同时也增长了当前网页的大小。因此对“小”数据特别有好处。java

相关文章
相关标签/搜索