[code]<script> 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 ¦ ¦ // not enough data (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")) </script>[code]
推荐阅读
ASP中的时间函数大全 时间操作函数第1/2页
Date 函数 描述:返回当前系统日期。 语法:Date DateAdd 函数 描述:返回已添加指定时间间隔的日期。 语法:DateAdd(interval, number, date) interval: 必选。字符串表达式,表示要添加的时间间隔。有关数值,请参阅>>>详细阅读
本文标题:utf-8编码转换成gb2312
地址:http://www.17bianji.com/kaifa2/ASP/33088.html
1/2 1