function utf2gb(utfstr)for dig=1 to len(utfstr)if mid(utfstr,dig,1)="%" thenif len(utfstr) >= dig+8 thengbstr=gbstr & convchinese(mid(utfstr,dig,9))dig=dig+8elsegbstr=gbstr & mid(utfstr,dig,1)end ifelsegbstr=gbstr & mid(utfstr,dig,1)end ifnextutf2gb=gbstrend function function convchinese(x) a=split(mid(x,2),"%")i=0j=0for i=0 to ubound(a) a(i)=c16to2(a(i))nextfor i=0 to ubound(a)-1digs=instr(a(i),"0")unicode=""for j=1 to digs-1if j=1 then a(i)=right(a(i),len(a(i))-digs)unicode=unicode & a(i)elsei=i+1a(i)=right(a(i),len(a(i))-2)unicode=unicode & a(i) end if nextif len(c2to16(unicode))=4 thenconvchinese=convchinese & chrw(int("&h" & c2to16(unicode)))elseconvchinese=convchinese & chr(int("&h" & c2to16(unicode)))end ifnextend functionfunction c2to16(x)i=1for i=1 to len(x)  step 4 c2to16=c2to16 & hex(c2to10(mid(x,i,4))) nextend function function c2to10(x)c2to10=0if x="0" then exit functioni=0for i= 0 to len(x) -1if mid(x,len(x)-i,1)="1" then c2to10=c2to10+2^(i)next end functionfunction c16to2(x)i=0for i=1 to len(trim(x)) tempstr= c10to2(cint(int("&h" & mid(x,i,1))))do while len(tempstr)<4tempstr="0" & tempstrloopc16to2=c16to2 & tempstrnextend functionfunction c10to2(x)mysign=sgn(x)x=abs(x)digs=1do if x<2^digs thenexit doelsedigs=digs+1end iflooptempnum=xi=0for i=digs to 1 step-1if tempnum>=2^(i-1) thentempnum=tempnum-2^(i-1)c10to2=c10to2 & "1" 
else
c10to2=c10to2 & "0"
end if
next
if mysign=-1 then c10to2="-" & c10to2end function

解决方案 »

  1.   

    觉得最好还是把.txt文件的编码改了.
    用记事本打开,另存为,编码选择ANSI就可以了.
      

  2.   

    看看这个js方法好使吗
    function chinesefromutf8url(strutf8)
    {
    var bstr = "";
    var noffset  =  0;
    //  processing  point  on  strutf8
    if (strutf8 == "")
    return "";
    strutf8  =  strutf8.tolowercase();
    noffset  =  strutf8.indexof("%e");
    if (noffset == -1)
    return  strutf8;
    while (noffset != -1)
    {
    bstr += strutf8.substr(0,  noffset);
    strutf8 = strutf8.substr(noffset, strutf8.length - noffset);
    if (strutf8 == "" || strutf8.length < 9) //  bad  string 
    return  bstr;
    bstr += utf8codetochinesechar(strutf8.substr(0, 9));
    strutf8 = strutf8.substr(9, strutf8.length - 9);
    noffset = strutf8.indexof("%e");
    }
    return bstr + strutf8;
    }
    function unicodefromutf8(strutf8)
    {
    var  bstr  =  "";   
    var  ntotalchars  =  strutf8.length;            //  total  chars  to  be  processed.   
    var  noffset  =  0;                                                            //  processing  point  on  strutf8   
    var  nremainingbytes  =  ntotalchars;            //  how  many  bytes  left  to  be  converted   
    var  noutputposition  =  0;   
    var  icode,  icode1,  icode2;                                    //  the  value  of  the  unicode.   
    while  (noffset  <  ntotalchars)   
    {   
    icode  =  strutf8.charcodeat(noffset);
    if  ((icode  &  0x80)  ==  0)                                    //  1  byte.   
    {   
    if  (  nremainingbytes  <  1  )                        //  not  enough  data   
    break;   
    bstr  +=  string.fromcharcode(icode  &  0x7f);   
    noffset++;   
    nremainingbytes  -=  1;   
    }   
    else  if  ((icode  &  0xe0)  ==  0xc0)            //  2  bytes   
    {   
    icode1  =    strutf8.charcodeat(noffset  +  1);   
    if  (  nremainingbytes  <  2 || (icode1  &  0xc0)  !=  0x80  )                        //  invalid  pattern   
    {   
    break;   
    }   
    bstr  +=  string.fromcharcode(((icode  &  0x3f)  <<  6)   | (              icode1  &  0x3f));   
    noffset  +=  2;   
    nremainingbytes  -=  2;   
    }   
    else  if  ((icode  &  0xf0)  ==  0xe0)            //  3  bytes   
    {   
    icode1  =    strutf8.charcodeat(noffset  +  1);   
    icode2  =    strutf8.charcodeat(noffset  +  2);   
    if  (  nremainingbytes  <  3 ||                                 //  not  enough  data   
                        (icode1  &  0xc0)  !=  0x80   ||                       //  invalid  pattern   
                        (icode2  &  0xc0)  !=  0x80  )   
    {   
    break;   
    }   
    bstr  +=  string.fromcharcode(((icode  &  0x0f)  <<  12) | ((icode1  &  0x3f)  <<    6) | (icode2  &  0x3f));   
    noffset  +=  3;   
    nremainingbytes  -=  3;   
    }   
    else                                                                                                //  4  or  more  bytes  --  unsupported   
    break;   
    }   
    if  (nremainingbytes  !=  0)   
    {   
    //  bad  utf8  string.   
    return  "";   
    }   
    return  bstr;   
    }   
    function  utf8codetochinesechar(strutf8)   
    {   
       var  icode,  icode1,  icode2;   
       icode  =  parseint("0x"  +  strutf8.substr(1,  2));   
       icode1  =  parseint("0x"  +  strutf8.substr(4,  2));   
       icode2  =  parseint("0x"  +  strutf8.substr(7,  2));   
       return  string.fromcharcode(((icode  &  0x0f)  <<  12) | ((icode1  &  0x3f)  <<    6) | (icode2  &  0x3f));   
    }   
    alert(chinesefromutf8url("%e6%b5%8b%e8%af%95"))
      

  3.   

    上面那个有点问题,修改了一下
    function chinesefromutf8url(strutf8)
    {
    var bstr = "";
    var noffset  =  0;
    //  processing  point  on  strutf8
    if (strutf8 == "")
    return "";
    strutf8  =  strutf8.toLowerCase();
    noffset  =  strutf8.indexOf("%e");
    if (noffset == -1)
    return  strutf8;
    while (noffset != -1)
    {
    bstr += strutf8.substr(0,  noffset);
    strutf8 = strutf8.substr(noffset, strutf8.length - noffset);
    if (strutf8 == "" || strutf8.length < 9) //  bad  string 
    return  bstr;
    bstr += utf8codetochinesechar(strutf8.substr(0, 9));
    strutf8 = strutf8.substr(9, strutf8.length - 9);
    noffset = strutf8.indexOf("%e");
    }
    return bstr + strutf8;
    }
    function unicodefromutf8(strutf8)
    {
    var bstr = "";
    var ntotalchars = strutf8.length; //  total  chars  to  be  processed.
    var noffset = 0; //  processing  point  on  strutf8
    var nremainingbytes = ntotalchars; //  how  many  bytes  left  to  be  converted
    var noutputposition = 0;
    var icode, icode1, icode2; //  the  value  of  the  unicode.
    while  (noffset  <  ntotalchars)   
    {   
    icode  =  strutf8.charcodeat(noffset);
    if  ((icode  &  0x80)  ==  0)                                    //  1  byte.   
    {   
    if  (  nremainingbytes  <  1  )                        //  not  enough  data   
    break;   
    bstr  +=  string.fromcharcode(icode  &  0x7f);   
    noffset++;   
    nremainingbytes  -=  1;   
    }   
    else  if  ((icode  &  0xe0)  ==  0xc0)            //  2  bytes   
    {   
    icode1  =    strutf8.charcodeat(noffset  +  1);   
    if  (  nremainingbytes  <  2 || (icode1  &  0xc0)  !=  0x80  )                        //  invalid  pattern   
    {   
    break;   
    }   
    bstr  +=  string.fromcharcode(((icode  &  0x3f)  <<  6)   | (              icode1  &  0x3f));   
    noffset  +=  2;   
    nremainingbytes  -=  2;   
    }   
    else  if  ((icode  &  0xf0)  ==  0xe0)            //  3  bytes   
    {   
    icode1  =    strutf8.charcodeat(noffset  +  1);   
    icode2  =    strutf8.charcodeat(noffset  +  2);   
    if  (  nremainingbytes  <  3 ||                                 //  not  enough  data   
                        (icode1  &  0xc0)  !=  0x80   ||                       //  invalid  pattern   
                        (icode2  &  0xc0)  !=  0x80  )   
    {
    break;
    }
    bstr  +=  string.fromcharcode(((icode  &  0x0f)  <<  12) | ((icode1  &  0x3f)  <<    6) | (icode2  &  0x3f));   
    noffset  +=  3;   
    nremainingbytes  -=  3;   
    }   
    else                                                                                                //  4  or  more  bytes  --  unsupported   
    break;   
    }   
    if  (nremainingbytes  !=  0)   
    {   
    //  bad  utf8  string.   
    return  "";   
    }   
    return  bstr;   
    }   
    function  utf8codetochinesechar(strutf8)   
    {   
       var  icode,  icode1,  icode2;   
       icode  =  parseInt("0x"  +  strutf8.substr(1,  2));   
       icode1  =  parseInt("0x"  +  strutf8.substr(4,  2));   
       icode2  =  parseInt("0x"  +  strutf8.substr(7,  2));   
       return  String.fromCharCode(((icode  &  0x0f)  <<  12) | ((icode1  &  0x3f)  <<    6) | (icode2  &  0x3f));   
    }   
    alert(chinesefromutf8url("%e6%b5%8b%e8%af%95"))
      

  4.   

    呵呵
    终于自己解决了
    我在动态加载的时候,重新指定了个编码utf_8