null - Powershell 2.0 在字符之间生成空值

标签 null powershell-2.0

使用 PowerShell 2.0:

write-output "abcd" >> mytext.txt  

返回:

a nul b nul c nul d nul



od -c 将 nul 显示为真正的二进制零,\0 ,或:a \0 b \0 c \0 d \0 (和 \r \0 \n \0 )。

我正在尝试生成一些 SQL,所以我认为这行不通。关于发生了什么以及如何使用写输出来获取指定字符的任何想法?

最佳答案

这是因为 write-output 默认为 UTF-16 文本编码,即每个字符 2 个字节。当您处理适合 ASCII 代码页范围的文本时,每个字符的第二个字节将为零。

这是由 $OutputEncoding 控制的全局变量,因此您可以将其设置为 ASCII。

另一种选择是使用 cmdlet Out-File,它具有显式编码参数。我建议您使用它而不是输出重定向,因为这样可以避免您全局更改环境(通过设置全局首选项变量 $OutputEncoding )

使用 Out-File 并将编码设置为 ASCII,您的示例将如下所示:

"abcd" | out-file "mytext.txt" -Encoding ASCII

请注意,并非所有字符都可以用 ASCII 表示,您应该确定这是否适合您的目的的编码。就我个人而言,我通常会选择 UTF-8,因为当字符落在 0-127 的 ASCII 范围内时,它与 ASCII 等效,但也处理国际字符。 Obligatory link about text encoding .

关于null - Powershell 2.0 在字符之间生成空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806305/

相关文章:

powershell - 如何正确使用 Copy-Item cmdlet 复制管道文件

powershell - 无法将参数绑定(bind)到参数 'NewName',因为它是空字符串

powershell - 如何使用 Get-AdUser 获取特定属性

由于错误,数据中包含 NULL 的 MySQL XML 导出不会重新导入

mysql - 复杂的(我的)SQL 左连接

powershell - 使用 $null splat 参数时,Powershell 何时遵守默认值?

java - 我不明白为什么这个简单的语句不起作用

Powershell、-filterhashtable 和运算符

powershell - Powershell脚本未从批处理文件触发

c# - 静态函数返回新对象总是设置为空