gpt4 book ai didi

powershell - 使用 PowerShell 正确读取 UTF-8 文件

转载 作者:行者123 更新时间:2023-12-02 11:28:23 24 4
gpt4 key购买 nike

以下情况:

  • PowerShell 脚本使用 UTF-8 编码创建文件
  • 用户可以编辑也可以不编辑文件,可能会丢失 BOM,但应将编码保留为 UTF-8,并可能更改行分隔符
  • 同一个 PowerShell 脚本读取文件,添加更多内容并将其全部以 UTF-8 格式写回同一个文件
  • 这可以迭代多次

使用 Get-ContentOut-File -Encoding UTF8 我无法正确读取它。它在之前编写的 BOM 上遇到了困难(将其放入内容中,破坏了我的解析正则表达式),不使用 UTF-8 编码,甚至删除了原始内容部分中的换行符。

我需要一个函数,可以读取任何UTF-8编码的文件,忽略并删除BOM并且不修改内容。我应该使用什么?

更新

我添加了一个小测试脚本,它显示了我正在尝试执行的操作以及发生的情况。

# Read data if exists
$data = ""
$startRev = 1;
if (Test-Path test.txt)
{
$data = Get-Content -Path test.txt
if ($data -match "^[0-9-]{10} - r([0-9]+)")
{
$startRev = [int]$matches[1] + 1
}
}
Write-Host Next revision is $startRev

# Define example data to add
$startRev = $startRev + 10
$newMsgs = "2014-04-01 - r" + $startRev + "`r`n`r`n" + `
"Line 1`r`n" + `
"Line 2`r`n`r`n"

# Write new data back
$data = $newMsgs + $data
$data | Out-File test.txt -Encoding UTF8

运行几次后,应将新的部分添加到文件的开头,不应以任何方式更改现有内容(当前丢失换行符),并且不应在末尾添加额外的新行文件(似乎有时会发生)。

相反,第二次运行给了我一个错误。

最佳答案

如果文件应该是 UTF8,为什么不尝试解码 UTF8 来读取它:

Get-Content -Path test.txt -Encoding UTF8

关于powershell - 使用 PowerShell 正确读取 UTF-8 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22789415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com