标题: VBS实现Unicode(UTF-16)转UTF-8
作者: Demon
链接: https://demon.tw/programming/vbs-unicode-to-utf8.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
有UTF-8转Unicode当然就有Unicode转UTF-8。
'Author: Demon 'Website: https://demon.tw 'Date: 2010/9/28 Function UnicodeToUtf8(str) Dim i, c, length out = "" length = Len(str) For i = 1 To length c = CLng("&H" & Hex(AscW(Mid(str,i,1)))) If (c >= &H0001) And (c <= &H007F) Then out = out & ChrB(c) ElseIf c > &H07FF Then out = out & ChrB(&HE0 Or (c\(2^12) And &H0F)) out = out & ChrB(&H80 Or (c\(2^ 6) And &H3F)) out = out & ChrB(&H80 Or (c\(2^ 0) And &H3F)) Else out = out & ChrB(&HC0 Or (c\(2^ 6) And &H1F)) out = out & ChrB(&H80 Or (c\(2^ 0) And &H3F)) End If Next UnicodeToUtf8 = out End Function
参考链接:UTF-8 – 维基百科,自由的百科全书
赞赏微信赞赏支付宝赞赏
随机文章:
代码中为什么是length = Len(str)而不是LenB(str)呢?有什么具体说法吗?
因为要获取的是单个字符的Unicode值,而不是单个字节的值,看一下参考链接里的转化方法就知道了。
明白了,UTF-8以字节以编码单元,属于变长编码,而Unicode以双字节为编码单元,属于固定长度编码。