📄 utf8tochinese.js
字号:
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));
}
// 将 UTF8 编码的 URL 中的中文部分(< 0xFFFF)转换过来
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 )
{
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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -