<script language=javascript>
var str="\u5929\u5916\u6C34\u706B"
document.writeln(str)
var result=""
for(var i=0;i<str.length;i++)
{
execScript("result=result+hex(asc('"+str.charAt(i,1)+"'))","VBScript")
}
document.write(result)
</script>

解决方案 »

  1.   

    感谢楼上的
    这段代码好像不是将utf8转GB2312吧运行你的程序,得到结果:天外水火 CCECCDE2CBAEBBF0 天外水火 的UTF8码是:E5A4A9 E5A496 E6B0B4 E781AB
      

  2.   

    不好意思,看错了,是UTF8
    <script language=javascript>
    var str="%E5%A4%A9%E5%A4%96%E6%B0%B4%E7%81%AB"
    str=decodeURI(str)
    document.writeln(str)
    var result=""
    for(var i=0;i<str.length;i++)
    {
    execScript("result=result+hex(asc('"+str.charAt(i,1)+"'))","VBScript")
    }
    document.write(result)
    </script>
      

  3.   

    非常感谢,测试正常对javascript不懂,能否再帮忙完善一下,让其处理字符串呢?
    编辑框输入中文后,结果放到input.value里,然后让程序对input.value再处理?
      

  4.   

    也就是说写个函数utf8_to_gb()就行了,我到时直接调用iutf8_to_gb(nput.value);
      

  5.   

    另外,var str="\u5929\u5916\u6C34\u706B" 这个是什么编码?
      

  6.   

    开始我搞错了,我准备截取网页输入的字符,转成GB2312,经过试验,发现输入的不是UTF8字符(虽然网页是UTF8)
    就拿“天外水火 ”这4个字来说,输入后的十六进制是:
    5929 5916 6C34 706B这个是什么编码?我需要将其转成标准的GB2312,放到*.js执行。function str_to_gb(str)
    {
    var result = '';
    var i; for (i = 0; i < str.length; i++)
    {
    var c = str.charCodeAt(i);
    var tmp = ''; if (c > 255)
    {
               //execScript("result=result+hex(asc('"+str.charAt(i,1)+"'))","VBScript")
                       怎么将1楼的这句转到这个函数里执行?

    }
    else
    {
    result += str.charAt(i);
    }
    }
    return result;
    }
      

  7.   

    4字节的是unicode码,和你的那个编码只是把其中的几位舍去,变成固定字节来保存,有节省空间等优点
    <script language=vbscript>
    function vb_str_to_gb(char)
    vb_str_to_gb=hex(asc(char))
    end function
    </script>
    <script language=javascript>
    function str_to_gb(str)
    {
    str=unescape(str)
    var result = '';
    var i; for (i = 0; i < str.length; i++)
    {
    var c = str.charCodeAt(i);
    var tmp = ''; if (c > 255)
    {
               result+=vb_str_to_gb(str.charAt(i));
    }
    else
    {
    result += str.charAt(i);
    }
    }
    return result;
    }
    alert(str_to_gb("\u5929\u5916\u6C34\u706B"))
    </script>
      

  8.   

    谢谢,学到了不少东西,原来是unicode将你改过的函数放到*.js执行的。
    执行时,提示下面出错:<script language=vbscript>
    function vb_str_to_gb(char)
    vb_str_to_gb=hex(asc(char))
    end function
    </script>
    <script language=javascript>
    可不可以将:
    result+=vb_str_to_gb(str.charAt(i));直接改成如下语句形式:result+=hex(asc(str.charAt(i))); 我这样改后,没有结果返回。
      

  9.   

    不行的,因为JS对中文的GB码支持不行,只能调VBSCRIPT来处理,除非加个对照表,不过那样的话,文件就大了.现在这样做很多浏览器也不兼容,很多浏览器不支持vbscript,如果可以这个需求最好拿到服务器端来做.
      

  10.   

    今天算碰到javascript高手了
    原来这样,对照表只要包括gb2312部分,一般不会太大吧?
    能否帮忙给段代码,我试试效果如何
      

  11.   

    特别感谢你的帮助,我先用vbscript方案。