问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB 建UTF-8的文本文件

发布网友 发布时间:2022-10-26 15:24

我来回答

2个回答

热心网友 时间:2023-09-16 22:34

VB编程下用UTF-8编码编写的文本文件,都会产生一个BOM,这使得转换出来的文件,在系统编译中编译不过去,必须要把BOM去掉,通过代码实现如下:

Dim app As Excel.Application
Dim eworkbook As Workbook
Dim eworksheet As Worksheet
Dim eworksheet_count As Integer
Dim sheetName As String
Dim obj As Object
Dim FileNum
Dim file_path as String
Dim j as Integer
Dim filepath_save as String

    filepath_save = "D:/" 
    Set app = New Excel.Application          //连接EXCEL
    Set eworkbook = app.Workbooks.Open(file_path)
    eworkbook_count = eworkbook.Worksheets.count

    For j = 1 To eworkbook_count
      filepath_path = filepath_save & j & ".txt"
      Set eworksheet = eworkbook.Sheets(j)
      sheetName = eworksheet.Name
      Set obj = New ADODB.Stream     //设置ADODB流
                                      
      With obj
        .Open
        .Charset = "UTF-8"
        .Position = .Size
        .WriteText "helloworld", 1
        .SaveToFile filepath_save
        .Close
      End With

      Set obj = Nothing

      Open filepath_save For Input As #1    //消除UTF-8的BOM
      Line Input #1, str
           mm = Replace(str, str, "msgid """"")
      Close #1
      Open filepath_save For Binary As #FileNum
           Put #FileNum, , mm
      Close #FileNum
    Next j

    Set eworksheet = Nothing
    eworkbook.Close
    Set eworkbook = Nothing
    app.Quit
    Set app = Nothing

热心网友 时间:2023-09-16 22:35

'所用到的API引入
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
' 将输入文本写进UTF8格式的文本文件
' 输入
' strInput:文本字符串
' strFile:保存的UTF8格式文件路径
' bBOM:True表示文件带"EFBBBF"头,False表示不带
Sub WriteUTF8File(strInput As String, strFile As String, Optional bBOM As Boolean = True)
Dim CP_UTF8 As String
Dim bByte As Byte
Dim ReturnByte() As Byte
Dim lngBufferSize As Long
Dim lngResult As Long
Dim TLen As Long

' 判断输入字符串是否为空
If Len(strInput) = 0 Then Exit Sub
On Error GoTo errHandle
' 判断文件是否存在,如存在则删除
' If Dir(strFile) <> "" Then Kill strFile

CP_UTF8 = 65001
TLen = Len(strInput)
lngBufferSize = TLen * 3 + 1
ReDim ReturnByte(lngBufferSize - 1)
lngResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(strInput), TLen, _
ReturnByte(0), lngBufferSize, vbNullString, 0)
If lngResult Then
lngResult = lngResult - 1
ReDim Preserve ReturnByte(lngResult)
Open strFile For Binary As #1
If bBOM = True Then
bByte = 239
Put #1, , bByte
bByte = 187
Put #1, , bByte
bByte = 191
Put #1, , bByte
End If
Put #1, , ReturnByte
Close #1
End If
Exit Sub
errHandle:
MsgBox Err.Description, , "错误 - " & Err.Number
End Sub来自:求助得到的回答
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...要名句哦,四言七言都行,希望各位哥哥姐姐帮帮忙,谢谢啦~_百度... 怎么进入华为tm800moden界面 前两天感冒发烧,打了几针,现在还没全好,这两天牙根部分脸上肌肉痛,尤... 做完爱有点血特别淡是怎么回事 为什么跟女的做爱做完的时候会流血为什么跟女的做完爱会流?_百度... 刚做完爱怎么会出血 西德意志汇报报社发展 法兰克福汇报的发展历史 法兰克福汇报社会影响 法兰克福汇报的报纸简介 vb 读取UTF-8编码文本文件 同学聚会送老师什么纪念品礼品,大家们都是送啥呢? VB 读取 UTF-8 问题 别人用江筱,用什么名字最想情侣 vb中有指针吗? vb中varptr函数的用法及语法 后宫险恶,不斗就活不下去,历史上的后宫真的那样吗? 长春到乌鲁木齐,怎么走最实惠省时?请详细到哪班飞机或者火车列车号 谁能告诉我 我国历史上有多少个朝代并且有多少个统治者 顺便说说谁的后宫最强大 有多少个妃子? 中国历史上最和谐的后宫是怎么样的? 我的后宫史小说免费阅读莲赋妩 后妈和亲妈是没什么区别的,大家会不会信? 青少年有抑郁症,家长怎样帮助他们走出来? 后妈与亲妈谁有抚养权 一根16厘米的铁丝,围成正方形的面积是多少平方厘米 花友最喜欢的10款普货多肉,颜值高还好养,橙梦露让人意外,你知道吗? 歌词里有你还好吗是什么歌 楚歌萧锦煜小说名字 知会一声是哪里的语言 一根长16厘米的铁丝,连续对折几次后长4厘米? 杭州哪里有自行车批发市场?厂家直销也可以。 在上海何处有卖永久或凤凰牌的自行车?(全新的) 阿米尼自行车如何? 癸酉日是哪天,什么是癸酉日 左边这个在东.宫演的谁?本名叫什么? 八字:辛卯 丁酉 癸酉 丁巳 是什么意思 己亥年正月初一癸酉日巳时冲肖兔猪之人是什么意思 两个大学生出国旅游签证好办吗 我想做一个英语水平测试,请问哈尔滨哪可以免费做啊? 大家觉得李梓民好还是李轩宇好啊 世界汉诗协会的世界汉诗协会组织机构 怎么把自己的名字改成数字??? 招远松岭农庄怎么样? 李姓一男一女起名 战役中的军礼都有哪些含义? 七星堆与北斗七星有关吗 四川省绵阳市涪城区永兴镇七星堆村邮编是什么? 四川成都有些什么奇观? 江西省高安市哪里有好玩的地方拜托各位大神 闪光眼睛需要配眼镜吗