js gb2312转utf8

sharembweb 40次浏览
代码部分:

<script>
function utf8(wide) {
	var c, s;
	var enc = "";
	var i = 0;
	while (i < wide.length) {
		c = wide.charCodeAt(i++);
		// handle UTF-16 surrogates
		if (c >= 0xDC00 && c < 0xE000) continue;
		if (c >= 0xD800 && c < 0xDC00) {
			if (i >= wide.length) continue;
			s = wide.charCodeAt(i++);
			if (s < 0xDC00 || c >= 0xDE00) continue;
			c = ((c - 0xD800) << 10) + (s - 0xDC00) + 0x10000;
		}
		// output value
		if (c < 0x80) enc += String.fromCharCode(c);
		else if (c < 0x800) enc += String.fromCharCode(0xC0 + (c >> 6), 0x80 + (c & 0x3F));
		else if (c < 0x10000) enc += String.fromCharCode(0xE0 + (c >> 12), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
		else enc += String.fromCharCode(0xF0 + (c >> 18), 0x80 + (c >> 12 & 0x3F), 0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));
	}
	return enc;
}
var hexchars = "0123456789ABCDEF";

function toHex(n) {
	return hexchars.charAt(n >> 4) + hexchars.charAt(n & 0xF);
}
var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";

function toUTFChar(s) {
	var s = utf8(s);
	var c;
	var enc = "";
	for (var i = 0; i < s.length; i++) {
		if (okURIchars.indexOf(s.charAt(i)) == -1)
			enc += "%" + toHex(s.charCodeAt(i));
		else
			enc += s.charAt(i);
	}
	return enc;
}
//案例测试
alert(toUTFChar("汉字")) //gb2312转utf-8
alert(decodeURIComponent(toUTFChar("汉字"))) //解utf-8到gb2312

 
</script>


随机内容

表情

共2条评论
  • 网友评论:

    赞一个

    2020-07-24 16:26:24 回复

  • 网友评论:

    学习了

    2020-07-24 16:26:24 回复

友情链接