VBA输出txt 中文乱码 如何设置成UTF-8
发布网友
发布时间:2022-04-25 17:57
我来回答
共2个回答
热心网友
时间:2023-10-23 01:02
把下面代码保存为“转换.vbs”,运行它就可以批量转换TXT文件的编码了。
on error resume next
Set WshShell=WScript.CreateObject("Shell.Application")
dirPath=WshShell.BrowseForFolder(0, "请选择路径", 0, "").items().item().path
if right(dirPath,1)<>"\" then dirPath=dirpath&"\"
ma=inputbox("请输入要转换为的编码","","UTF-8")
if ma="" or dirPath="\" or msgbox("在使用前请确认已备份文件夹"&dirPath,1)=2 then WScript.Quit
'遍历文件夹下的文件
Set FSO = CreateObject("scripting.filesystemobject")
Set f = FSO.GetFolder(dirPath)
Set fs = f.files
For Each fileN in fs
FN=dirPath&fileN.name&""
if ".txt"=lcase(right(FN,4)) then Call WriteToFile(FN, ReadFile(FN, CheckCode(FN)), ma)
Next
Set FSO = Nothing
wscript.echo "全部成功"
'检测文件的编码
Function CheckCode (FileUrl)
Dim slz
set slz = CreateObject("Adodb.Stream")
slz.Type = 1
slz.Mode = 3
slz.Open
slz.Position = 0
slz.Loadfromfile FileUrl
Bin=slz.read(2)
if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB Then
Codes="UTF-8"
elseif AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
Codes="Unicode"
else
Codes="GB2312"
end if
slz.Close
set slz = Nothing
CheckCode=Codes
End Function
'以指定的编码读取文件
Function ReadFile(FileUrl, CharSet)
On Error Resume Next
Dim Str
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.loadfromfile FileUrl
Str = stm.readtext
stm.Close
Set stm = Nothing
wscript.echo Str
ReadFile = Str
End Function
'以指定的编码写文件
Function WriteToFile (FileUrl, Str, CharSet)
On Error Resume Next
Set stm = CreateObject("Adodb.Stream")
stm.Type = 2
stm.mode = 3
stm.charset = CharSet
stm.Open
stm.WriteText Str
stm.SaveToFile FileUrl, 2
stm.flush
stm.Close
Set stm = Nothing
End Function
热心网友
时间:2023-10-23 01:02
如果是excel vba 输出的话,那么另存的语句可以是下面这样,后面追加设定txt的format就可以了
ThisWorkBook.SaveAs Filename:="d:\data\" & str & ".txt", FileFormat:=xlUnicodeText
上次请教了VBA中汉字转GB2313,实践中还有需要转UTF8的情况,继续请教...
End Function 以下是转化为UTF8编码的函数,如果要修改为单元格,需要自己修改下 Function SaveToUTF8(sStr As String)Dim DAT() As String, DAT1() As Byte, ST As String Dim Z As String Dim zTem As String Dim zCod As String Dim zHex As String Dim zBin As String Dim zRes As...
PDF可以转换为WORD吗?
1.当然可以,首先要确定自己有一个pdf文档,而且确定目的是需要将pdf文档转换为word格式,然后我们将现有文档通过迅捷pdf转换器软件打开。2.通过选择PDF转换页面功能其中的PDF文件转WORD项目拖入文件。3.接着在迅捷pdf转换器下方按自己的需要是...
用VBA向数据库表里插入中文字段是乱码,怎么调?
首先把你的页面设置成这个字符集:Window--Preferences--输入jsp,搜索--点击jsp--在相应的字符集设置上设置成自己想要的编码集。如果这样还是不行的话,说明你数据库字符集设置有问题,这样设置:首先把MySQL的服务停掉 在运行窗口输入:net stop mysql 把服务器和客户端的字符集改成自己想用的字符集...
vba中如何把unicode字符串转化成utf-8的字节数组?哪位大神可以帮我解决...
tt = BytesToBstr(.ResponseBody, "UTF-8") Function BytesToBstr(strBody, CodeBase) '使用Adodb.Stream对象提取字符串 Dim objStream On Error Resume Next Set objStream = CreateObject("Adodb.Stream") With objStream .Type = 1 '二进制 .Mode = 3 '读写 ...
vb unicode问题 例如utf8 转换
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。) 设置值 conversion 参数的设置值为: 常数 值 说明 vbUpperCase 1 将字符串文字转成大写。 vbLowerCase 2 将字符串文字转成小写。 vbProperCase 3 将字符串中每个字的开头字母转成大写。 vbWide...
excel的VBA编码问题
回答:要用到AdoStream对象,你自己搜一下教程学习一下就会了。
win7 Excel2016 VBA代码出现问号 是哪里有问题?
这是编码问题,VBA内部用unicode编码,如果在复制过程中编码格式变了(比如变为utf-8或者gb2312等),就会出现乱码(只有汉字会乱码,英文字母和数字是不会的)。正确的做法是在VBA中通过“导入导出”的方式来交换文件(在别人电脑上导出,把文件整体复制到你的电脑,然后导入),而不要简单地用复制粘贴...
excel乱码怎么转换成数字excel乱码怎么转换成数字快捷键
比如UTF-8和GBK等,因此需要使用转换工具将乱码转换为数字。一种简单方法是使用“数据”选项卡中的“文本转列”功能,将乱码以固定宽度的形式分隔开,并按照指定的列宽进行转换。另外,可以使用VBA宏编程语言或者Python等编程语言,通过读取数据文件并按照指定的编码方式进行转换,将乱码转换为数字。
Excel VBA如何用WriteLine输出该字符串?
EXCEL VBA中,没有WriteLine语句,没办法输出字符串。在excel VBA中,写文件使用write,先要打开一个输入文件,代码:Open "c:\w.txt" For Output As 1 Write #1, "test"
EXCEL VBA 读AS400数据中文乱码问题
看一下你使用的User Profile的CCSID,看和你字段的CCSID能不能对上。
金苗系统导出的EXCEL表格中乱码删除方法?
1. 选择整列或整行:在Excel表格中,点击需要删除乱码的列或行的标头字母或数字,以选中整列或整行。2. 打开“数据”选项卡:在Excel顶部菜单栏中找到“数据”选项卡,并点击打开。3. 点击“文本转换”功能:在“数据”选项卡中,找到“文本转换”功能区,并点击打开。4. 选择“删除特殊字符”:在...