PHPに実装されているUTF8エンコーディングをUnicodeに変換する関数
リリース: 2016-07-25 09:07:12
-
-
function Utf8ToUnicode(strUtf8) - {
- var bstr = “”;
- var nTotalChars = strUtf8.length; // 処理される合計文字数
- var nOffset = 0; // strUtf8
- var の処理ポイント nRemainingBytes = nTotalChars; // 変換される残りのバイト数
- var nOutputPosition = 0;
- var iCode, iCode1, iCode2; // Unicode の値。
while (nOffset < nTotalChars) - {
- iCode = strUtf8.charCodeAt(nOffset);
- if ((iCode & 0×80) == 0 ) // 1 byte.
- {
- if ( nRemainingBytes < 1 ) // データが足りません
- break;
bstr += String.fromCharCode(iCode & 0×7F);
- nOffset ++;
- nRemainingBytes -= 1;
- }
- else if ((iCode & 0xE0) == 0xC0) // 2 バイト
- {
- iCode1 = strUtf8.charCodeAt(nOffset + 1);
- if ( nRemainingBytes (iCode1 & 0xC0) != 0×80 ) // 無効なパターン
- {
- 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 (iCode1 & 0xC0) != 0 ×80 || // 無効なパターン
- (iCode2 & 0xC0) != 0×80 )
- {
- break;
- }
bstr += String.fromCharCode(((iCode & 0× 0F) ((iCode1 & 0×3F) (iCode2 & 0×3F));
- nOffset += 3;
- nRemainingBytes -= 3;
- }
- else // 4 バイト以上 — サポートされていません
- break;
- }
- < p>if (nRemainingBytes != 0)
- {
- // 不正な UTF8 文字列。
- return "";
- }
return bstr;
- }
- ?>
-
复制代
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31