utf-8编码转换成gb2312
[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]
您可能感兴趣的文章: 将字符串转换成gb2312或者utf-8编码的参数(js版) php实现utf-8和GB2312编码相互转换函数代码 UTF-8 GBK UTF8 GB2312 之间的区别和关系介绍 PHP字符编码问题之GB2312 VS UTF-8解决方法 VBS实现GB2312,UTF-8,Unicode,BIG5编码转换工具 PHP 解决utf-8和gb2312编码转换问题 unicode utf-8 gb18030 gb2312 gbk各种编码对比 ASP中Utf-8与Gb2312编码转换乱码问题的解决方法 页面编码声明 MSSQL转MYSQL,gb2312转utf-8无乱码解决方法 PHP iconv 解决utf-8和gb2312编码转换问题 ASP UTF-8页面乱码+GB2312转UTF-8 +生成UTF-8格式的文件(编码) 用VBS实现的批量gb2312转utf-8,支持拖动 用javascript实现gb2312转utf-8的脚本 [转]ASP实现关键词获取(各搜索引擎,GB2312及UTF-8) UTF-8转GB2312函数 将编码从GB2312转成UTF-8的方法汇总(从前台、程序、数据库)