在项目中遇到这样的问题,程序中需要将用 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对象,写了个简单的测试例子如下:
vbscript脚本用二进制方式读写文件
最新推荐文章于 2023-10-25 22:32:08 发布
在将由Adodb.Stream生成的UTF-8 CSV文件导入MySQL时,首列出现问号问题,原因是文件开头存在BOM(EF BB BF)。通过VBScript以二进制模式读取文件,跳过前三个字节即可解决。本文提供了一个简单的VBScript示例,展示如何处理并保存无BOM的文件。
摘要由CSDN通过智能技术生成