Unicode XML
Nemrég abban kérték a segítségem, hogy egy PowerShell script segítségével készített xml állomány kódolását miként lehet megváltoztatni, ugyanis azt eredetileg UTF8-ban mentették le, nekik ez viszont nem felelt meg.
Amennyiben (mint jelen esetben) egy már létező adattal dolgozunk, az alábbi példában a $XML változóban hivatkozok rá, ha viszont még nincs, akkor pl. az alábbi utasítással hozhatjuk létre:
$XML = New-Object System.Xml.XmlDocument
A kódolás változtatására a neten keresgélve több módszert is találhatunk. Ezekből próbáltam egyet megfelelően összeállítani, amely még ha nem is működik minden esetben, de az adott cél elérésében segített (az adott sorba mindenki másolja a neki megfelelő kódolást). Amit viszont “csak” dokumentáltam, hogy a különböző Unicode kódolások eléréséhez milyen paramétereket kell megadni – ez azért fontos, mert van olyan kódolás, ahova 1, van, ahol 2 paramétert kell kötelező módon megadni (minden esetben a BOM az utolsó paraméter):
# Encoding types, just for listing
# UTF8
$UTF8WithoutBom = New-Object System.Text.UTF8Encoding($false)
$UTF8WithBom = New-Object System.Text.UTF8Encoding($true)
# UTF16
$UnicodeLEWithoutBOM = New-Object System.Text.UnicodeEncoding($false,$false)
$UnicodeLEWithBOM = New-Object System.Text.UnicodeEncoding($false,$true)
$UnicodeBEWithoutBOM = New-Object System.Text.UnicodeEncoding($true,$false)
$UnicodeBEWithBOM = New-Object System.Text.UnicodeEncoding($true,$true)
# UTF32
$UTF32LEWithoutBOM = New-Object System.Text.UTF32Encoding($false,$false)
$UTF32LEWithBOM = New-Object System.Text.UTF32Encoding($false,$true)
$UTF32BEWithoutBOM = New-Object System.Text.UTF32Encoding($true,$false)
$UTF32BEWithBOM = New-Object System.Text.UTF32Encoding($true,$true)
# End listing
$FileName = “$Path\$name.xml”
$File = New-Object System.IO.StreamWriter($FileName, $false, $UnicodeLEWithoutBOM)
$XML.Save($File)
$File.Close()
Ez a része kipipálva 😊
Forrás: https://asteriksz.wordpress.com/