有没有一种方法可以使VS Code不替换未知文本字符?

时间:2020-04-27 23:46:06

标签: powershell visual-studio-code unicode

我目前正在使用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代码可以解释它,问题出在加载文件上。我可以设置一些选项吗?当我打开文件时停止此替换吗?

3 个答案:

答案 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

�