为什么没有浏览器相关api,搞得我想改个字符串编码gbk,都不行

阅读次数 77

为什么没有浏览器相关api,搞得我想改个字符串编码gbk,都不行

你是想转gbk然后传给后端吗?没有转换那个api

对,主要那网站太老了,用gbk

我这有个方法,不过这个方法不完善有点问题,要完善的去网上找几十几百K的库,然后用function的形式。

1 Answers
/**
* @param {string} str
*/
function stringToGBK(str) {
  var result = '';

  for (var i = 0; i < str.length; i++) {
    var char = str.charAt(i);
    var code = str.charCodeAt(i);

    // 如果字符属于ASCII范围
    if (code <= 0x7F) {
      result += encodeURIComponent(char).substr(1).toUpperCase();
    }
    // 否则,按GBK编码规则进行转换
    else {
      var byteStr = code.toString(16).toUpperCase();

      while (byteStr.length < 4) {
        byteStr = '0' + byteStr;
      }

      var byte1 = parseInt(byteStr.substr(0, 2), 16);
      var byte2 = parseInt(byteStr.substr(2, 2), 16);

      result += '%' + byte1.toString(16).toUpperCase();
      result += '%' + byte2.toString(16).toUpperCase();
    }
  }

  return result;
}

var str = "你好,世界!";
var gbkStr = stringToGBK(str);
console.log(gbkStr);