«Специальный символ», который вы видите, - это Знак порядка байтов для Юникода (он же UTF-16LE) (\xFF\xFE
), потому что вы использовали [System.Text.Encoding]::Unicode.GetString()
. Чтобы прочитать этот файл с помощью Get-Content, вам необходимо указать ту же кодировку, используя его параметр -Encoding
:
[XML]$AppConfig = Get-Content -Path "c:\temp\2.xml" -Encoding Unicode
В зависимости от версии PowerShell, которую вы используете, Get-Content по умолчанию использует разные кодировки:
- Версии 5.1 и ниже используют кодировку, которая соответствует активной кодовой странице системы (обычно ANSI)
- Версии 6 и выше используют UTF8NoBOM
Есть ли особая причина c для записи XML в UTF16? Обычно UTF-8 используется с XML