欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-02-06 13:55:58
...
  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. ?>
复制代码