0

我有一个 Unicode TXT 文件,我想用编号替换一些部分。但它失败了,原因如下:

Line: 24
Character: 1
Code: 800A0005

这是我的 VBS 文件:

Ein = "D:\aaa\column.txt"
Aus = "D:\aaa\column-final.txt"
'Suchbegriff im RegEx-Format, daher: Punkt maskieren und zu ersetzenden Teil (=Nummer) in Klammern setzen
Such = "<TD>(XXXXX)</TD>"
N = 1 'Startwert für neue Nummerierung

Set fso = CreateObject("Scripting.FileSystemObject")
T1 = fso.OpenTextFile(Ein).ReadAll

Set rE = New RegExp
rE.Pattern = Such
rE.IgnoreCase = True
rE.Global = True

SP = 1 'Startposition im String
For Each M In rE.Execute(T1)
    P = M.FirstIndex + M.Length + 1 'Endposition des die Fundstelle enthaltenden Teilstrings
     'im gefundenen Teilstring (des Originaltextes) die bisherige Nummer ersetzen und zum neuen Text hinzufügen
    T2 = T2 & Replace(Mid(T1, SP, P - SP), M.SubMatches(0), N, 1, 1)
    N = N + 1
    SP = P 'Startposition = vorige Endposition
Next
T2 = T2 & Mid(T1, SP) 'den Teil nach der letzten Fundstelle auch noch mitnehmen
fso.CreateTextFile(Aus, true).Write T2

我很抱歉德语文本,希望你能阅读它。

你能帮我找出错误吗?

4

1 回答 1

1

该问题是由同时打开/创建EinASCIIAus编码(FSO 的默认设置)引起的。“Microsoft VBScript 运行时错误'800a0005'。无效的过程调用或参数”通常是由要求 .Write(Line) 为所选编码输出非法内容引起的。(参见这个答案

如果Ein是 UTF-16,您可以在该模式下打开/创建文件(这些方法的编码参数);如果是 UTF-8,您可以使用 ADODB.Stream 进行 I/O

于 2013-07-24T18:17:27.090 回答