V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lmaq
V2EX  ›  程序员

javascript gb2312 转 utf8 有办法转吗?

  •  
  •   lmaq · 2015-06-15 15:28:08 +08:00 via Android · 4273 次点击
    这是一个创建于 3251 天前的主题,其中的信息可能已经有所发展或是发生改变。
    远端数据返回是gb2312而本地js是utf8写到页面是乱码,如何用js脚本把gb2312编码转换成utf8 ?
    第 1 条附言  ·  2015-06-15 20:40:55 +08:00
    已解决参考资料:http://m.blog.csdn.net/blog/onestab_11109/43824651
    7 条回复    2015-06-16 10:08:28 +08:00
    otakustay
        1
    otakustay  
       2015-06-15 16:36:04 +08:00
    远端返回的时候在Content-Type头里加上charset应该就行了的
    lmaq
        2
    lmaq  
    OP
       2015-06-15 16:39:39 +08:00
    @otakustay 主要是远端不可控啊,只能在本地操作了。
    otakustay
        3
    otakustay  
       2015-06-15 16:44:59 +08:00
    @lmaq 如果是jsonp的话还行,script标签能加charset属性,如果是普通的xhr的话基本没什么办法了……
    imn1
        4
    imn1  
       2015-06-15 16:50:27 +08:00
    如果自己有后台环境,可以用后台做个跳板,js连接后台某个程序,这个程序把远端接收转码
    oott123
        5
    oott123  
       2015-06-15 16:54:55 +08:00
    https://www.npmjs.com/package/iconv-lite
    Convert character encodings in pure javascript.

    In-browser usage via Browserify (~180k gzip compressed with Buffer shim included).
    tux
        6
    tux  
       2015-06-15 18:21:14 +08:00
    document.charset='gb2312';
    iahu
        7
    iahu  
       2015-06-16 10:08:28 +08:00   ❤️ 1
    var rstr2utf8 = function (input) {
    var output = "";

    for (var n = 0; n < input.length; n++) {
    var c = input.charCodeAt(n);

    if (c < 128) {
    output += String.fromCharCode(c);
    } else if ((c > 127) && (c < 2048)) {
    output += String.fromCharCode((c >> 6) | 192);
    output += String.fromCharCode((c & 63) | 128);
    } else {
    output += String.fromCharCode((c >> 12) | 224);
    output += String.fromCharCode(((c >> 6) & 63) | 128);
    output += String.fromCharCode((c & 63) | 128);
    }
    }

    return output;
    }
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6088 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:58 · PVG 09:58 · LAX 18:58 · JFK 21:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.