我有一个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
我很抱歉德语文本,希望你能读懂。
你能帮我找到错误吗?
答案 0 :(得分:1)
问题是由于为ASCII编码打开/创建Ein
和Aus
(FSO的默认设置)引起的。 “Microsoft VBScript运行时错误'800a0005'。无效的过程调用或参数”通常是由于要求.Write(Line)输出所选编码的非法内容。 (参见this answer)
如果Ein
是UTF-16,您可以在该模式下打开/创建文件(这些方法的编码参数);如果它是UTF-8,你可以使用ADODB.Stream进行I / O