PowerShell v5 Формат UTF8 потерян после преобразования CR LF в LF

#vba #powershell #encoding #utf-8

Вопрос:

Я использую макрос vba для написания сценария PS1, чтобы :

  • сначала конвертируйте мой файл txt в формат UTF8
  • Во-вторых, преобразуйте CR LF в LF.

Но когда я это делаю, я теряю формат UTF8.

Вот мой код :

 $file = 'C:Usersc92434Downloadsrun_param_21_04_21dg_poc_parameter.txt'
(Get-Content $file) | Out-File -Encoding UTF8 $file
((Get-Content $file) -join "`n")   "`n" | Set-Content -NoNewline $file
 

С уважением,

Джувзер

Комментарии:

1. Рассмотрим Get-Content -Encoding и Set-Content -Encoding

2. для какой линии ?

Ответ №1:

Вы можете сделать это за один раз:

 $file = 'C:Usersc92434Downloadsrun_param_21_04_21dg_poc_parameter.txt'
(Get-Content -Path $file -Raw) -replace 'r?n', "`n" | Set-Content -Path $file -NoNewline -Encoding UTF8
 

-Raw Переключатель на Get-Content считывает файл как одну многострочную строку.
-replace 'r?n', "`n" Заменяет все CRLF на LF