以下是引用huasinstamps在2022-8-10 19:17:29的发言:
这个在vfp6试过不能用,我参考过以前的帖子,据说只在在vfp9中用。
vfp6的STRCONV()不支持UTF-8转码,可以试试用API或其他脚本写。
API函数:WideCharToMultiByte、MultiByteToWideChar

程序代码:
DECLARE long WideCharToMultiByte IN kernel32 long,long,string,long,string@,long,string@,long
DECLARE long MultiByteToWideChar IN kernel32 long,long,string,long,string@,long
#define CP_UTF8 65001
#define ERROR_NO_UNICODE_TRANSLATION 1113
cUtf8 = AnsiToUtf8("中国")
? Utf8ToAnsi(cUtf8)
RETURN
FUNCTION AnsiToUtf8(cAnsi)
LOCAL WChar, WCharSize, cUtf8
WChar = STRCONV(cAnsi+CHR(0),5)
WCharSize = WideCharToMultiByte(CP_UTF8, 0, WChar, -1, NULL, 0, NULL, 0)
IF WCharSize==0 OR WCharSize==ERROR_NO_UNICODE_TRANSLATION
RETURN ""
ENDIF
cUtf8 = SPACE(WCharSize)
IF WideCharToMultiByte(CP_UTF8,0,WChar,-1,@cUtf8,WCharSize,NULL,0) != WCharSize
RETURN ""
ENDIF
RETURN cUtf8
ENDFUNC
FUNCTION Utf8ToAnsi(cUtf8)
LOCAL WCharSize, buf
WCharSize = MultiByteToWideChar(CP_UTF8, 0, cUtf8, -1, NULL, 0)
IF WCharSize==0 OR WCharSize==ERROR_NO_UNICODE_TRANSLATION
RETURN ""
ENDIF
buf = SPACE(WCharSize*2) && 要足够大
IF MultiByteToWideChar(CP_UTF8,0,cUtf8,-1,@buf,WCharSize) != WCharSize
RETURN ""
ENDIF
buf = STRCONV(buf,6)
RETURN LEFT(buf,AT(CHR(0),buf)-1)
ENDFUNC