如何在vba中实现字符的unicode编码和utf-8编码相互转换? - API - ExcelOffice

如何在vba中实现字符的unicode编码和utf-8编码相互转换?





在文章如何在vba中实现字符的Unicode编码与ANSI编码相互转换?中介绍了利用vba内置函数StrConv 实现字符的Unicode编码与ANSI编码的相互转换。

今天,介绍利用api函数WideCharToMultiByteMultiByteToWideChar  实现字符的unicode编码和utf-8编码相互转换。

其中WideCharToMultiByte语法如下:

其中参数codepage表示要以什么字符集进行转换,具体的值可以从Code Page Identifiers获取到。

一般的几个常用的值为Const CP_UTF8 = 65001(表示转换为UTF-8),Const CP_ACP = 0(标准转换为系统默认的ANSI编码)

dwFlags参数一般为0,lpWideCharStr参数指的指向要转换的字符串的指针,cchWideChar参数表示要转换的字符串的字符数,lpMultiByteStr参数为指向接收转换后的字节的缓存区的指针,cbMultiByte参数表示以字节为单位表示的lpMultiByteStr参数的缓存区的字节大小,如果cbMultiByte参数设置为0,则WideCharToMultiByte函数将返回实际转换后需要的字节数,lpDefaultChar参数和lpUsedDefaultChar参数一般设置为0。

类似的MultiByteToWideChar 参数的语法如下:

其中参数codepage表示要以什么字符集进行转换,dwFlags参数一般为0,lpMultiByteStr参数表示指向待转换字符串的指针,cbMultiByte参数表示以字节为单位表示的lpMultiByteStr参数的字节大小。lpWideCharStr参数表示指向的转换后的结果字符串的指针,cchWideChar参数表示转换后的字符串的字符数,如果cchWideChar参数设置为0,则MultiByteToWideChar 函数将返回实际转换后的字符串的字符数。

根据以上的分析,可以使用如下的代码实现字符的Unicode编号到UTF-8编码的相互转换

 

 

打赏

发表评论