文件管理 · 2022年8月19日

vb保存文件编码为utf8|VB中如何生成编码格式为UTF-8的文本文件

㈠ VB怎么把ANSI编码的txt文件转为UTF-8编码

charset设置为utf-8即可Function BytesToBstr(body, charset) Dim objstream Set objstream = CreateObject("adodb.stream") objstream.Type = 1 objstream.Mode = 3 objstream.Open On Error Resume Next objstream.Write body objstream.Position = 0 objstream.Type = 2 objstream.charset = charset BytesToBstr = objstream.ReadText objstream.Close Set objstream = NothingEnd Function

㈡ VB 如何将TEXT保存为utf8格式的文件

Function U2UTF8(ByVal a_iNum) Dim sResult, sUTF8 Dim iTemp, iHexNum, i iHexNum = Trim(a_iNum) If iHexNum = "" Then Exit Function End If sResult = "" If (iHexNum < 128) Then sResult = sResult & iHexNum ElseIf (iHexNum < 2048) Then sResult = ChrB(&H80 + (iHexNum And &H3F)) iHexNum = iHexNum \ &H40 sResult = ChrB(&HC0 + (iHexNum And &H1F)) & sResult ElseIf (iHexNum < 65536) Then sResult = ChrB(&H80 + (iHexNum And &H3F)) iHexNum = iHexNum \ &H40 sResult = ChrB(&H80 + (iHexNum And &H3F)) & sResult iHexNum = iHexNum \ &H40 sResult = ChrB(&HE0 + (iHexNum And &HF)) & sResult End If U2UTF8 = sResultEnd FunctionFunction GB2UTF(ByVal a_sStr) Dim sGB, sResult, sTemp Dim iLen, iUnicode, iTemp, i sGB = Trim(a_sStr) iLen = Len(sGB) For i = 1 To iLen sTemp = Mid(sGB, i, 1) iTemp = Asc(sTemp) If (iTemp > 127 Or iTemp < 0) Then iUnicode = AscW(sTemp) If iUnicode < 0 Then iUnicode = iUnicode + 65536 End If Else iUnicode = iTemp End If sResult = sResult & U2UTF8(iUnicode) Next GB2UTF = sResultEnd FunctionPrivate Sub Form_Load()Dim utf8() As Byte utf8 = U2UTF8("hello") Open "d:\a.txt" For Binary As #1 Put #1, , utf8 Close #1End Sub这样即可!!

㈢ VB中如何生成编码格式为UTF-8的文本文件

'API 函数WideCharToMultiByte参数说明'第一个参数:指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,你也可以使用如下所示代码页之一。' CP_ACP 当前系统ANSI代码页' CP_MACCP 当前系统Macintosh代码页' CP_OEMCP 当前系统OEM代码页,一种原始设备制造商硬件扫描码' CP_SYMBOL Symbol代码页.' CP_THREAD_ACP 当前线程ANSI代码页,用于Windows 2000及以后版本,我不明白是什么' CP_UTF7 UTF-7,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL' CP_UTF8 UTF-8,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL'第二个参数:指定如何处理没有转换的字符,但不设此参数函数会运行的更快一些,我都是把它设为0。'第三个参数: 待转换的宽字符串?'第四个参数:待转换宽字符串的长度,-1表示转换到字符串结尾。'第五个参数: 接收转换后输出新串的缓冲区?'第六个参数: 输出缓冲区大小?'第七个参数: 指向字符的指针?'第八个参数:开关变量的指针,用以表明是否使用过默认字符,一般设为0。Private Declare Function WideCharToMultiByte Lib "kernel32" ( _ ByVal CodePage As Long, _ ByVal dwFlags As Long, _ ByVal lpWideCharStr As Long, _ ByVal cchWideChar As Long, _ ByRef lpMultiByteStr As Any, _ ByVal cchMultiByte As Long, _ ByVal lpDefaultChar As String, _ ByVal lpUsedDefaultChar As Long) As Long'Private Const CP_UTF8 = 65001' Sub test()strTest = "这是文件内容"testFile = "d:\gb2312.html"Call SaveFile(testFile, strTest, "gb2312")testFile = "d:\utf8.html"Call SaveFile(testFile, strTest, "utf8")End SubSub SaveFile(strPath_file, str, strPageCode)If strPageCode = "utf8" Then'存为UTF-8 Dim lBufSize As Long Dim lRest As Long Dim bUTF8() As Byte Dim TLen As Long' TLen = Len(str) lBufSize = TLen * 3 + 1 ReDim bUTF8(lBufSize – 1) lRest = WideCharToMultiByte(CP_UTF8, 0, StrPtr(str), TLen, bUTF8(0), lBufSize, vbNullString, 0) If lRest Then lRest = lRest – 1 ReDim Preserve bUTF8(lRest) Open strPath_file For Binary As #1 Put #1, , bUTF8 Close #1 End IfElse'存为GB-2312 Fn = FreeFile Open strPath_file For Output As Fn Print #Fn, str Close #FnEnd IfEnd Sub

㈣ VB怎么写UTF-8无BOM文件

1. 如果模板采用包含的方法包含多个UTF-8文件时,则模板需要选择UTF-8无BOM格式保存格式。2. 用mb_convert_encoding / iconv 把gb2312文件转换成UTF-8文件时,默认设置是不带BOM的。不带BOM可能出现上述乱码问题,但是带 BOM,对于PHP的include文件要小心,会在PHP字节流前面多出EF BB BF,提前输出到显示器有可能会带来程序错误。一个解决方案是凡是被include的文件都保存为ANSI,主文件可以是UTF-8。3. 如果中文页面在html head标记中将title标记放在<meta http-equiv="content-type" content="text/html; charset=UTF-8″ />前面会导致页面空白。所以UTF-8页面应该使用标准顺序为:<meta http-equiv="content-type" content="text/html; charset=UTF-8" /><meta http-equiv="content-language" content="zh-CN" /><meta content="index,follow" /><meta content="" /><meta content="" /><meta content="general" /><meta content="" /><meta content="" /><meta content="" /><title></title>

㈤ excel vb 文本保存为 utf-8

'API 函数WideCharToMultiByte参数说明'第一个参数:指定要转换成的字符集代码页,它可以是任何已经安装的或系统自带的字符集,你也可以使用如下所示代码页之一。' CP_ACP 当前系统ANSI代码页' CP_MACCP 当前系统Macintosh代码页' CP_OEMCP 当前系统OEM代码页,一种原始设备制造商硬件扫描码' CP_SYMBOL Symbol代码页.' CP_THREAD_ACP 当前线程ANSI代码页,用于Windows 2000及以后版本,我不明白是什么' CP_UTF7 UTF-7,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL' CP_UTF8 UTF-8,设置此值时lpDefaultChar和lpUsedDefaultChar都必须为NULL'第二个参数:指定如何处理没有转换的字符,但不设此参数函数会运行的更快一些,我都是把它设为0。'第三个参数: 待转换的宽字符串?'第四个参数:待转换宽字符串的长度,-1表示转换到字符串结尾。'第五个参数: 接收转换后输出新串的缓冲区?'第六个参数: 输出缓冲区大小?'第七个参数: 指向字符的指针?'第八个参数:开关变量的指针,用以表明是否使用过默认字符,一般设为0。Private Declare Function WideCharToMultiByte Lib "kernel32" ( _ ByVal CodePage As Long, _ ByVal dwFlags As Long, _ ByVal lpWideCharStr As Long, _ ByVal cchWideChar As Long, _ ByRef lpMultiByteStr As Any, _ ByVal cchMultiByte As Long, _ ByVal lpDefaultChar As String, _ ByVal lpUsedDefaultChar As Long) As Long'Private Const CP_UTF8 = 65001' Sub test()strTest = "这是文件内容"testFile = "d:\gb2312.html"Call SaveFile(testFile, strTest, "gb2312")testFile = "d:\utf8.html"Call SaveFile(testFile, strTest, "utf8")End SubSub SaveFile(strPath_file, str, strPageCode)If strPageCode = "utf8" Then'存为UTF-8 Dim lBufSize As Long Dim lRest As Long Dim bUTF8() As Byte Dim TLen As Long' TLen = Len(str) lBufSize = TLen * 3 + 1 ReDim bUTF8(lBufSize – 1) lRest = WideCharToMultiByte(CP_UTF8, 0, StrPtr(str), TLen, bUTF8(0), lBufSize, vbNullString, 0) If lRest Then lRest = lRest – 1 ReDim Preserve bUTF8(lRest) Open strPath_file For Binary As #1 Put #1, , bUTF8 Close #1 End IfElse'存为GB-2312 Fn = FreeFile Open strPath_file For Output As Fn Print #Fn, str Close #FnEnd IfEnd Sub