VBSCRIPT REPLACE 不从解密字段中删除空格

VBSCRIPT REPLACE not removing spaces from Decrypted fields

有点头疼....

我正在使用 VBScript 函数 REPLACE 将来自 MSSQL 数据库的解密字段中的 spaces 替换为“/”。

但是 REPLACE 函数不是 "seeing" space。

比如我运行以下任意一项,其中"ITF_U_ClientName_Denc"字段的解密值为"Johnny Carson":

REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/")
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/")
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"),"Chr(160)","/")
REPLACE(CSTR(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"))," ","/")
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/",1,-1,1)
REPLACE(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc")," ","/",1,-1,0)

返回值为"Johnny Carson"(space未替换为/)

这个问题似乎只与 spaces 有关,因为当我 运行 这样做时: 替换(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"),"a",“/”)

我得到 "Johnny C/rson"。

此外,这个问题似乎完全与解密值中的 spaces 有关,因为当我 运行 这个:

REPLACE("Johnny Carson"," ","/")

当然返回值为"Johnny/Carson"。

我已经检查了正在写入页面源的内容,它只是 "Johnny Carson",没有编码或特殊字符。

我也尝试过 SPLIT 函数,看看它是否会 "see" space,但它不会。

最后,感谢有用的评论,我尝试了 VBS REGEX 搜索 \s。

Set regExp = New RegExp
regExp.IgnoreCase = True
regExp.Global = True
regExp.Pattern = "\s" 'Add here every character you don't consider as special character
strProcessed = regExp.Replace(ITF_U_Ledger.Fields("ITF_U_ClientName_Denc"), "?")

不幸的是,strProcessed ret运行s "Johnny Carson"(即 spaces 不是 detected/removed)。

如果我替换regExp.Pattern = "a", strProcessed returns "Johnny C?rson".

非常感谢您的帮助!!

正如我们所发现的,正确的字符代码是 160,这就成功了:

replace(..., ChrW(160), "...")

这似乎是特定于数据的,此外,作为替代方案,您可以尝试获取源脚本的相同编码(即使用 另存为编码 ),或者将收到的数据库值转换为不同的目标编码。