我目前遇到了Out-File
CMDlet的问题,我用它来创建日志文件。这很好用,但遗憾的是我无法强制PowerShell正确导出德语变音。我试过的是:
Out-File
CMDlet在这种情况下使用其-Append
参数;否则创建一个具有Unicode编码的新文件{{1} }}参数未设置)-Encoding
,而"My String" | Out-File "xyz.log" -Encoding utf8
参数应使用UTF-8编码处理字符串导出;使用双引号(-Encoding
)指定utf8
的值-Encoding
不起作用Microsoft's Developer Network和StackOverflow上的其他线程无法解决我的问题。有没有人知道这个问题的解决方案或至少解决方法?
答案 0 :(得分:0)
我发现问题的解决方法比我之前想象的要快得多。我所做的是用一个Unicode值替换日志字符串中的每个变音符号。为此,我创建了一个包含特定变音符号及其unicode值的数组的$umlauts
数组。
您还应该关注的是将日志记录字符串包装成单个引号('äöü'
),因为PowerShell似乎与变音符号和双引号有问题( "äöü"
)。
UPDATE 1:正如n3wjack所提到的,带有变音符号的字符串必须用单引号括起来,以便PowerShell“按原样”处理每个字符。
以下是我对上述内容的实现:
function Out-LogFile ($str) {
$umlauts = @(
@('Ä',[char]0x00C4),
@('Ö',[char]0x00D6),
@('Ü',[char]0x00DC),
@('ä',[char]0x00E4),
@('ö',[char]0x00F6),
@('ü',[char]0x00FC)
)
foreach ($umlaut in $umlauts) {
$str = $str -replace $umlaut[0],$umlaut[1]
}
$str | Out-File "myfile.txt"
return $str
}
Out-LogFile 'ÄÖÜäöü'
更新2:我注意到n3wjack的提示使我的实现过时了。通过将日志文本包装成单个quoatation标记(如'äöü' | Out-File "file.log"
),可以正确导出所有变音符号。谢谢!