我目前正在使用VS代码编写PowerShell脚本。作为此脚本的一部分,REGEX用于替换/删除非典型字符,该非典型字符经常出现在数据中,并引起故障。字符为(U + 2019),用代码打开脚本时,脚本将永久替换为(U + FFFD)
因此一行:
SELECT a.token,
A.valueA,
A.valueB,
B.Express
c.Date "SHOP DATE",
d.Date "SHIP DATE"
FROM TableA A
LEFT JOIN TABLEB B
ON A.Token = B.Token
LEFT JOIN TABLEB C
ON A.Token = B.Token
AND c.value = 'SHOP' AND c.value2 = 'Val1'
AND c.value = 'SHIP' AND c.value2 = 'Val3'
LEFT JOIN TABLEB D
ON A.Token = B.Token
GROUP BY a.token
ORDER BY b.date DESC;
永久变为:$user.Name = $user.Name -Replace "'|\’|\(|\)|\s+",""
直到手动更改。看到文件打开后我可以粘贴U + 2019字符,然后运行代码,我认为VS代码可以解释它,问题出在加载文件上。我可以设置一些选项吗?当我打开文件时停止此替换吗?
答案 0 :(得分:1)
就我而言,打开 VS Code 设置“文件:自动猜测编码”已经解决了读取和保存问题。
答案 1 :(得分:0)
这似乎全部归结为编码。默认情况下,Visual Studio代码使用UTF-8,并且通常可以正确处理保存/查看Unicode。
如果问题在打开上,则可能是Visual Studio Code在打开文件时误解了文件编码的情况。您可以通过更改"files.encoding"
设置,通过VS Code中用于文件特定编码(例如UTF-8,UTF-8BOM,UTF-16LE等)的设置来更改编码(Configuring VS Code encoding。>
"files.encoding": "utf8bom"
如果问题是保存文件,则文件将被保存为ASCII(又名Windows-1252),而不是正确的UTF-8或等效文件。保存时,将用替换字符(U + FFFD)替换该字符,该字符将在下次打开时显示。
注意:Windows PowerShell v5.1使用的默认编码是Windows-1252,这可能就是为什么保存带有特殊字符的脚本可能无法工作的原因。默认情况下,PowerShell Core v6 +使用UTF-8。
答案 2 :(得分:0)
如果我将Vscode保存为Windows 1252编码,则在下一次打开时看到字符"’"
变为�
。我认为问题是Vscode无法识别Windows1252。它将其打开为UTF8。如果使用Windows 1252编码重新打开,它将正确显示。其他编码也可以正常工作,甚至可以显示字符。这包括utf8 no bom。
即使Powershell 5在Windows 1252中也没有此问题,只有Vscode。 Powershell 5中的设置内容和获取内容默认为Windows 1252。
"’" | set-content file
get-content file
’
Powershell 7实际上会有相同的问题:
get-content file
�