将vbCrLF附加到UCS-2 Little Endian

时间:2016-03-22 10:48:26

标签: csv vbscript qtp hp-uft

我通过HP-UFT(以前的QTP)使用vbscript。 我面临的问题看起来非常简单,但我无法修复它。

我有从某个系统导出的.CSV文件,此文件中没有完成的CRLF。

我需要一个简单的修复追加新行到此文件(我知道这可能是写入另一个文件的解决方法) 我这样使用FileSystemObject:

Set objFile = objFSO.OpenTextFile(outFile,8)' (outFile,8, true/false/default)
objFile.Write "test string" & vbCrLf ' and other different combinations

我没有使用ADODB.Stream,因为它没有附加功能而且我不需要其他文件

当我尝试在记事本中打开文件后,我看到空方块而不是CRLF。我认为这是因为使用UCS-2 Little Endian编码创建的文件。我对utf-8没有这样的问题

PS或许可以更快速地修复系统变量?我在网络中发现可以通过一些系统varibale更改所有创建文件的默认编码,但是找不到它的名字。 我在地区和语言中的语言 - >行政 - >非Unicode的语言是英语

1 个答案:

答案 0 :(得分:2)

如有疑问,请阅读documentation

  

语法

     

object.OpenTextFile(filename[, iomode[, create[, format]]])

     

参数

     

[...]
  格式
  可选的。三个三态值中的一个用于指示打开文件的格式( TristateTrue = -1以将文件打开为Unicode, TristateFalse = 0以ASCII格式打开文件, TristateUseDefault = -2打开文件作为系统默认值)。如果省略,则文件以ASCII格式打开。

您打开文件以进行追加,但不指定编码,因此解释器采用ASCII格式。改变行

Set objFile = objFSO.OpenTextFile(outFile,8)

Set objFile = objFSO.OpenTextFile(outFile, 8, False, -1)

问题就会消失。