使用 PowerShell 类型命令会导致无效字符。

18 浏览
0 Comments

使用 PowerShell 类型命令会导致无效字符。

在PowerShell中,默认情况下,当你将命令的输出重定向到文件或通过管道传输到其他地方时,编码是UTF-16,这并不方便。我正在寻找将其更改为UTF-8的方法。

可以通过逐个替换>foo.txt的语法为| out-file foo.txt -encoding utf8来逐个更改。但是每次都这样做很麻烦。

在PowerShell中持久设置的方式是将它们放在\Users\me\Documents\WindowsPowerShell\profile.ps1文件中;我已经验证了这个文件确实在启动时执行。

有人说可以通过$PSDefaultParameterValues = @{'Out-File:Encoding' = 'utf8'}来设置输出编码,但我尝试过,并没有效果。

https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/提到了$OutputEncoding,乍一看似乎与此相关,但然后它又提到了输出以ASCII编码,这并不是实际发生的情况。

如何设置PowerShell使用UTF-8编码?

0
0 Comments

powershell类型的命令会导致无效字符的问题。原因是使用PowerShell在Windows上进行输出重定向时,创建的文件采用UTF-16编码。为了解决这个问题,可以尝试以下方法:

mysqldump.exe [options] --result-file=dump.sql

参考链接:mysqldump_result-file

0
0 Comments

问题原因:powershell中使用type命令导致无效字符的出现。

解决方法:使用write-output命令代替type命令,并使用out-file命令将输出内容追加到文件中,同时指定编码为utf8。

具体代码如下:

write-output "your text" | out-file -append -encoding utf8 "filename"

如果需要将多个命令的输出内容同时追加到文件中,可以使用大括号将这些命令括起来,并通过管道将输出内容传递给out-file命令。

具体代码如下:

{
  command 1
  command 2
} | out-file -append -encoding utf8 "filename"

此外,根据问题中的引用,“可以通过替换'>foo.txt'语法为'| out-file foo.txt -encoding utf8'来逐个解决问题,但每次都要重复这样做非常麻烦。”也就是说,建议的解决方法正是问题的提问者想要避免的。因此,建议避免使用-append参数。

为了解决powershell中使用type命令导致无效字符的问题,可以使用write-output命令代替type命令,并使用out-file命令将输出内容追加到文件中,同时指定编码为utf8。同时,可以使用大括号将多个命令括起来,并通过管道将输出内容传递给out-file命令。避免使用-append参数。

0
0 Comments

问题:powershell类型的命令导致无效字符

原因:

- 在Windows PowerShell中,默认情况下,使用的字符编码是不一致的。

- 默认情况下,Out-File和> / >>命令创建的文件是Unicode(UTF-16LE)编码的,而Set-Content使用的是ANSI编码。

- 在Windows PowerShell 5.1或更高版本中,可以通过修改$PSDefaultParameterValues变量的值来设置Out-File / > / >>命令的默认编码为UTF-8。

- 在Windows PowerShell 5.0或更低版本中,无法更改> / >>命令的编码,但对于显式调用的Out-File命令,上述技术可以使用。

- 在Windows PowerShell 3.0或更高版本中,可以通过修改$PSDefaultParameterValues变量的值来设置所有支持-Encoding参数的命令的默认编码为UTF-8。

解决方法:

- 将以下命令添加到$PROFILE文件中,以使Out-File和Set-Content命令默认使用UTF-8编码:

$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$PSDefaultParameterValues['Set-Content:Encoding'] = 'utf8'

- 如果希望仅在当前会话中更改默认编码,可以使用以下命令:

$PSDefaultParameterValues = @{ 'Out-File:Encoding' = 'utf8'; 'Set-Content:Encoding' = 'utf8' }

- 对于所有支持-Encoding参数的命令,可以使用以下命令将默认编码设置为UTF-8:

$PSDefaultParameterValues['*:Encoding'] = 'utf8'

- 将上述命令添加到$PROFILE文件中,可以使所有命令在默认情况下使用UTF-8编码,但如果命令显式指定了编码,则不会受到影响。

解决Windows PowerShell中出现无效字符的问题的方法是通过修改$PSDefaultParameterValues变量的值来设置Out-File和Set-Content命令的默认编码为UTF-8。可以将这些命令添加到$PROFILE文件中,以使其在默认情况下使用UTF-8编码,但如果命令显式指定了编码,则不会受到影响。

0