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 ""
}
中文转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, ''))