Heim >Backend-Entwicklung >PHP-Tutorial >php实现的一个UTF8编码转Unicode的函数

php实现的一个UTF8编码转Unicode的函数

WBOY
WBOYOriginal
2016-07-25 09:07:12814Durchsuche
  1. function Utf8ToUnicode(strUtf8)

  2. {
  3. var bstr = “”;
  4. var nTotalChars = strUtf8.length; // total chars to be processed.
  5. var nOffset = 0; // processing point on strUtf8
  6. var nRemainingBytes = nTotalChars; // how many bytes left to be converted
  7. var nOutputPosition = 0;
  8. var iCode, iCode1, iCode2; // the value of the unicode.
  9. while (nOffset {

  10. iCode = strUtf8.charCodeAt(nOffset);
  11. if ((iCode & 0×80) == 0) // 1 byte.
  12. {
  13. if ( nRemainingBytes break;
  14. bstr += String.fromCharCode(iCode & 0×7F);

  15. nOffset ++;
  16. nRemainingBytes -= 1;
  17. }
  18. else if ((iCode & 0xE0) == 0xC0) // 2 bytes
  19. {
  20. iCode1 = strUtf8.charCodeAt(nOffset + 1);
  21. if ( nRemainingBytes (iCode1 & 0xC0) != 0×80 ) // invalid pattern
  22. {
  23. break;
  24. }
  25. bstr += String.fromCharCode(((iCode & 0×3F) nOffset += 2;

  26. nRemainingBytes -= 2;
  27. }
  28. else if ((iCode & 0xF0) == 0xE0) // 3 bytes
  29. {
  30. iCode1 = strUtf8.charCodeAt(nOffset + 1);
  31. iCode2 = strUtf8.charCodeAt(nOffset + 2);
  32. if ( nRemainingBytes (iCode1 & 0xC0) != 0×80 || // invalid pattern
  33. (iCode2 & 0xC0) != 0×80 )
  34. {
  35. break;
  36. }
  37. bstr += String.fromCharCode(((iCode & 0×0F) ((iCode1 & 0×3F) (iCode2 & 0×3F));

  38. nOffset += 3;
  39. nRemainingBytes -= 3;
  40. }
  41. else // 4 or more bytes — unsupported
  42. break;
  43. }
  44. if (nRemainingBytes != 0)

  45. {
  46. // bad UTF8 string.
  47. return “”;
  48. }
  49. return bstr;

  50. }
  51. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn