相关疑难解决方法(0)

464
推荐指数
9
解决办法
46万
查看次数

将PowerShell的默认输出编码更改为UTF-8

默认情况下,当您将命令的输出重定向到文件或将其传递到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?

powershell utf-8 character-encoding

70
推荐指数
1
解决办法
8万
查看次数

Windows换行符的Unix换行符(在Windows上)

有没有人知道Windows中的一种方式(比如Powershell或工具)可以递归目录并将任何unix文件转换为Windows文件.

我对Powershell中至少检测到unix文件的方式非常满意.

对于单个文件来说,这很容易做到这一点,但我追求的是一些可扩展的东西(因此倾向于Powershellish解决方案).

powershell newline line-breaks

28
推荐指数
4
解决办法
2万
查看次数

使用powershell替换CRLF

编者注:根据OP后来的评论来判断,这个问题的要点是: 如何将一个带有CRLF(Windows风格)行结尾的文件转换为PowerShell中的LF-only(Unix风格)文件?

这是我的powershell脚本:

 $original_file ='C:\Users\abc\Desktop\File\abc.txt'
 (Get-Content $original_file) | Foreach-Object {
 $_ -replace "'", "2"`
-replace '2', '3'`
-replace '1', '7'`
-replace '9', ''`
-replace "`r`n",'`n'
} | Set-Content "C:\Users\abc\Desktop\File\abc.txt" -Force
Run Code Online (Sandbox Code Playgroud)

使用此代码,我可以将3替换为2,使用空字符串替换为7和9.我只能使用换行符替换回车换行符.但这不起作用.

powershell replace newline eol

26
推荐指数
3
解决办法
9万
查看次数

通过 CMD 和 PowerShell 管道时的不同行为和输出

我正在尝试将文件的内容通过管道传输到我制作的一个简单的 ASCII 对称加密程序。这是一个简单的程序,它从 STDIN 读取输入并对输入的每个字节添加或减去某个值 (224)。例如:如果第一个字节是 4,我们要加密,那么它变成 228。如果超过 255,程序只是执行一些模运算。

这是我用 cmd 得到的输出(test.txt 包含“这是一个测试”):

    type .\test.txt | .\Crypt.exe --encrypt | .\Crypt.exe --decrypt
    this is a test
Run Code Online (Sandbox Code Playgroud)

它也以另一种方式工作,因此它是一种对称加密算法

    type .\test.txt | .\Crypt.exe --encrypt | .\Crypt.exe --decrypt
    this is a test
Run Code Online (Sandbox Code Playgroud)

但是,PowerShell 上的行为是不同的。首先加密时,我得到:

    type .\test.txt | .\Crypt.exe --decrypt | .\Crypt.exe --encrypt
    this is a test
Run Code Online (Sandbox Code Playgroud)

这就是我首先解密时得到的:

截屏

可能是编码问题。提前致谢。

powershell encoding cmd pipe

5
推荐指数
1
解决办法
680
查看次数