php實作的一個UTF8編碼轉Unicode的函數
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-07-25 09:07:12
-
-
function Utf8ToUnicode(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 & 0×80) == 0) // 1 byte.
- {
- if ( nRemainingBytes < 1 ) // not enough data
- break;
bstr += String.fromCharCode(iCode & 0×7F);
- nOffset ++;
- nRemainingBytes -= 1;
- }
- else if ((iCode & 0xE0) == 0xC0) // 2 bytes
- {
- iCode1 = strUtf8.charCodeAt(nOffset + 1);
- if ( nRemainingBytes < 2 || // not enough data
- (iCode1 & 0xC0) != 0×80 ) // invalid pattern
- {
- break;
- }
bstr += String.fromCharCode(((iCode & 0×3F) << 6) | ( iCode1 & 0×3F)); - 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) != 0×80 || // invalid pattern
- (iCode2 & 0xC0) != 0×80 )
- {
- break;
- }
bstr += String.fromCharCode(((iCode & 0×0F) << 12) | - ((iCode1 & 0×3F) << 6) |
- (iCode2 & 0×3F));
- nOffset += 3;
- nRemainingBytes -= 3;
- }
- else // 4 or more bytes — unsupported
- break;
- }
if (nRemainingBytes != 0)
- {
- // bad UTF8 string.
- return “”;
- }
return bstr;
- }
- ?>
-
复制代码
|
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2025-02-26 03:58:14
-
2025-02-26 03:38:10
-
2025-02-26 03:17:10
-
2025-02-26 02:49:09
-
2025-02-26 01:08:13
-
2025-02-26 00:46:10
-
2025-02-25 23:42:08
-
2025-02-25 22:50:13
-
2025-02-25 21:54:11
-
2025-02-25 20:45:11
最新問題
-
2025-03-27 19:52:53
-
2025-03-27 19:51:32
-
2025-03-27 19:50:35
-
2025-03-27 19:49:33
-
2025-03-27 19:48:29