【QTP】FSO读取/写txt文本乱码解决方法

FilesystemObject OpenTextFile 默认会用系统的编码读取文本,默认一般都是ANSI,如果服务器操作系统不支持某种语言,那么就会出乱码了。你就必须把文本转换成Unicode,同时OpenTextFile方法也设置成Unicode的方法读取。

FilesystemObject对象的OpenTextFile方法

OpenTextFile方法
该方法可以打开指定的文件并返回一个TextStream对象,可以读取此对象或将其追加到文件中。语法如下:
Object.OpenTextFile(filename[,iomode[,create[,format]]])
OpenTextFile方法的参数说明

参数 参数说明
object 必选。应为FileSystemObject对象的名称。
filename 必选。字符串表达式,指明要打开的文件名称。
iomode 可选。输入/输出模式,是下列两个常数之一:ForReading或ForAppending。如果iomode=1,以只读模式打开文件,不能对此文件进行写操作。如果iomode=8,打开文件并在文件末尾进行写操作。
create 可选。Boolean值,指出当指定的filename不存在时是否能够创建新文件。允许创建新文件时为True,否则为False。默认值为False。
format 可选。三个Tristate值之一,指出以何种格式打开文件。若忽略此参数,则文件以ASC2格式打开。如果format=-2,以系统默认格式打开文件。如果format=-1,以Unicode格式打开文件。如果format=0,以Asc2格式打开文件。

类似的还有写文件,服务器不支持中文编码,用ASCII写中文字符的时候很有可能会报错,也一样要设置CreateTextFile 方法的编码。

FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]])
FolderObject.CreateTextFile(filename[,overwrite[,unicode]])

参数 描述
filename 必需的。需创建文件的名称。
overwrite 可选的。指示能否覆盖已有文件的布尔值。True 指示可覆盖文件,False 指示不能覆盖文件。默认是 True 。
unicode 可选的。指示文件是作为 Unicode 还是 ASCII 文件来创建的布尔值。True 指示文件作为 Unicode 文件创建,而 False 指示文件被作为 ASCII 文件创建。默认是 False。

其中unicode参数可以为以下几种: -2 ‘以系统默认格式打开文件。
-1 ‘以 Unicode 格式打开文件。
0 ‘以 ASCII 格式打开文件。

作者:席飞剑
转自:http://automationqa.com/forum.php?mod=viewthread&tid=1695&extra=page%3D1

发表评论

电子邮件地址不会被公开。