vbscript脚本用二进制方式读写文件

在将由Adodb.Stream生成的UTF-8 CSV文件导入MySQL时,首列出现问号问题,原因是文件开头存在BOM(EF BB BF)。通过VBScript以二进制模式读取文件,跳过前三个字节即可解决。本文提供了一个简单的VBScript示例,展示如何处理并保存无BOM的文件。
摘要由CSDN通过智能技术生成

  在项目中遇到这样的问题,程序中需要将用 Adodb.Stream生成的utf-8格式的csv文件导入mysql数据库中,当使用load data infile命令导入数据库以后,导入的表中的第一行第一列的数据总是有一个问号,而导入前用文本编辑器打开看不出有什么问题,经过调查最后发现文件的开始处有三个字节不可见的字符,用ultraEdit的16进制编辑方式可以看到是EF BB BF三个字节(注意,一定要用版本高一点的ue才可以看到utf-8文件正确的格式,最初我用ue 10.2版本看到的一直是FFFE两个字节,被老版本的给迷惑了。后来用ue的14.2版本才可以看到正确的格式。),查了些资料才知道这是utf-8文件的bom信息,utf-8的文件分有bom和无bom的两种,Adodb.Stream生成的文件是有bom的,而在导入数据库时,这三个字符被当作普通字符插入表中,所以造成了不想要的错误结果。
    于是想办法解决这个问题,由于utf-8格式的文件,它的存储顺序与编码顺序是一致的,所以有bom和无bom格式的区别就是多了EF BB BF这三个字节,只要我们用二进制方式读取文件,跳过前三个字节就可以去掉这个bom了。要二进制方式操作文件,还是只能使用Adodb.Stream对象,写了个简单的测试例子如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值