Javascript:encodeURI()/ encodeURIComponent()charset

时间:2013-02-13 13:12:53

标签: javascript url encoding character-encoding

有没有办法在Javascript的encodeURI()或encodeURIComponent()中指定charset? E.g:

encodeURIComponent("例子", "UTF-8")输出%E4%BE%8B%E5%AD%90

encodeURIComponent("例子", "GBK")输出%C0%FD%D7%D3

3 个答案:

答案 0 :(得分:2)

我的解决方案是使用npm包urlencodebrowserify

写在urlencode.js:

var urlencode = require("urlencode");
module.exports = function (s) { return urlencode(s, "gbk"); }

browserify urlencode.js --s encode > bundle.js

在bundle.js中,声明了一个名为encode的函数。

答案 1 :(得分:1)

在修改之前基于earlier edit of this question,您似乎正在尝试根据您提交的不同搜索字词访问各种百度百科。我的答案与你的新JS问题无关,但是对你的旧问题的简单解决方案(并且不需要JS解决方案)是在百度Baike URL中指定字符编码:&enc=。以下所有内容均正确解决:

答案 2 :(得分:0)

const _encodeURIComponent = (x) =>
    x   
        .split('')
        .map((y) => {
            if (!RegExp(/^[\x00-\x7F]*$/).test(y)) {
                return iconv
                    .encode(y, encoding)
                    .reduce((a, b) => a + '%' + b.toString(16), '') 
                    .toUpperCase();
            } else {
                return y;
            }   
        })  
        .join('');

用所需的编码替换encoding