JS 中文 UTF-8编码互转

JavaScript0116

JS 中文 UTF-8编码互转,第1张

中文转UTF-8:

let str = '中文内容'    //待转换中文

escape(str ).replace(/(%u)(\w{4})/gi, "$2")

UTF-8转中文:

let str = '徐恒'    //待转换UTF-8

unescape(str .replace(//g, '%u').replace(//g, ''))

//--------把中文字符转换成Utf8编码------------------------//

 function EncodeUtf8(s1)

  {

      var s = escape(s1)

      var sa = s.split("%")

      var retV =""

      if(sa[0] != "")

      {

         retV = sa[0]

      }

      for(var i = 1 i < sa.length i ++)

      {

           if(sa[i].substring(0,1) == "u")

           {

               retV += Hex2Utf8(Str2Hex(sa[i].substring(1,5)))

              

           }

           else retV += "%" + sa[i]

      }

     

      return retV

  }

  function Str2Hex(s)

  {

      var c = ""

      var n

      var ss = "0123456789ABCDEF"

      var digS = ""

      for(var i = 0 i < s.length i ++)

      {

         c = s.charAt(i)

         n = ss.indexOf(c)

         digS += Dec2Dig(eval_r(n))

          

      }

      //return value

      return digS

  }

  function Dec2Dig(n1)

  {

      var s = ""

      var n2 = 0

      for(var i = 0 i < 4 i++)

      {

         n2 = Math.pow(2,3 - i)

         if(n1 >= n2)

         {

            s += '1'

            n1 = n1 - n2

          }

         else

          s += '0'

         

      }

      return s

     

  }

  function Dig2Dec(s)

  {

      var retV = 0

      if(s.length == 4)

      {

          for(var i = 0 i < 4 i ++)

          {

              retV += eval_r(s.charAt(i)) * Math.pow(2, 3 - i)

          }

          return retV

      }

      return -1

  }

  function Hex2Utf8(s)

  {

     var retS = ""

     var tempS = ""

     var ss = ""

     if(s.length == 16)

     {

         tempS = "1110" + s.substring(0, 4)

         tempS += "10" +  s.substring(4, 10)

         tempS += "10" + s.substring(10,16)

         var sss = "0123456789ABCDEF"

         for(var i = 0 i < 3 i ++)

         {

            retS += "%"

            ss = tempS.substring(i * 8, (eval_r(i)+1)*8)

           

           

           

            retS += sss.charAt(Dig2Dec(ss.substring(0,4)))

            retS += sss.charAt(Dig2Dec(ss.substring(4,8)))

         }

         return retS

     }

     return ""

  }