ホームページ >バックエンド開発 >PHPチュートリアル >PHPに実装されているUTF8エンコーディングをUnicodeに変換する関数

PHPに実装されているUTF8エンコーディングをUnicodeに変換する関数

WBOY
WBOYオリジナル
2016-07-25 09:07:12814ブラウズ
  1. function Utf8ToUnicode(strUtf8)

  2. {
  3. var bstr = “”;
  4. var nTotalChars = strUtf8.length; // 処理される合計文字数
  5. var nOffset = 0; // strUtf8
  6. var の処理ポイント nRemainingBytes = nTotalChars; // 変換される残りのバイト数
  7. var nOutputPosition = 0;
  8. var iCode, iCode1, iCode2; // Unicode の値。

  9. while (nOffset < nTotalChars)

  10. {
  11. iCode = strUtf8.charCodeAt(nOffset);
  12. if ((iCode & 0×80) == 0 ) // 1 byte.
  13. {
  14. if ( nRemainingBytes < 1 ) // データが足りません
  15. break;

  16. bstr += String.fromCharCode(iCode & 0×7F);

  17. nOffset ++;
  18. nRemainingBytes -= 1;
  19. }
  20. else if ((iCode & 0xE0) == 0xC0) // 2 バイト
  21. {
  22. iCode1 = strUtf8.charCodeAt(nOffset + 1);
  23. if ( nRemainingBytes (iCode1 & 0xC0) != 0×80 ) // 無効なパターン
  24. {
  25. break;
  26. }

  27. bstr += String.fromCharCode(((iCode & 0×3F) << 6) | ( iCode1 & 0×3F));

  28. nOffset += 2;
  29. nRemainingBytes -= 2;
  30. }
  31. else if ((iCode & 0xF0) == 0xE0) // 3 bytes
  32. {
  33. iCode1 = strUtf8.charCodeAt(nOffset + 1);
  34. iCode2 = strUtf8.charCodeAt(nOffset + 2);
  35. if ( nRemainingBytes (iCode1 & 0xC0) != 0 ×80 || // 無効なパターン
  36. (iCode2 & 0xC0) != 0×80 )
  37. {
  38. break;
  39. }

  40. bstr += String.fromCharCode(((iCode & 0× 0F) ((iCode1 & 0×3F) (iCode2 & 0×3F));

  41. nOffset += 3;
  42. nRemainingBytes -= 3;
  43. }
  44. else // 4 バイト以上 — サポートされていません
  45. break;
  46. }

  47. < p>if (nRemainingBytes != 0)
  48. {
  49. // 不正な UTF8 文字列。
  50. return "";
  51. }

  52. return bstr;

  53. }
  54. ?>

复制代


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。