PDA

Показать полную графическую версию : [PowerShell 5.1] - почему не распознает русский текст в XML?


senglory
21-09-2023, 23:49
Вот мой код (файл в UTF-8):

Add-Type -AssemblyName System.Web


$fileIn1 = "Bridges.gpx"

$XPath = "//gpx:wpt"

$ns = @{gpx="http://www.topografix.com/GPX/1/1"}

[hashtable]$wptsUnique = @{}




[xml]$xml = Get-Content $fileIn1 -Encoding UTF8 -Raw
$nsManager = New-Object System.Xml.XmlNamespaceManager($xml.NameTable)
$nsManager.AddNamespace("gpx", "http://www.topografix.com/GPX/1/1")
$wpts = $xml.selectNodes($XPath, $nsManager)


foreach($wpt in $wpts)
{
write-host $wpt.name
}

Вот XML, который я им читаю (файл UTF-8):

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<gpx version="1.1" creator="OsmAnd+ 3.9.5"
xmlns="http://www.topografix.com/GPX/1/1"
xmlns:osmand="https://osmand.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"
xmlns:wptx1="http://www.garmin.com/xmlschemas/WaypointExtension/v1"
xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
xmlns:trp="http://www.garmin.com/xmlschemas/TripExtensions/v1"
xmlns:adv="http://www.garmin.com/xmlschemas/AdventuresExtensions/v1"
xmlns:prs="http://www.garmin.com/xmlschemas/PressureExtension/v1"
xmlns:tmd="http://www.garmin.com/xmlschemas/TripMetaDataExtensions/v1"
xmlns:vptm="http://www.garmin.com/xmlschemas/ViaPointTransportationModeExtensions/v1"
xmlns:ctx="http://www.garmin.com/xmlschemas/CreationTimeExtension/v1"
xmlns:gpxacc="http://www.garmin.com/xmlschemas/AccelerationExtension/v1"
xmlns:gpxpx="http://www.garmin.com/xmlschemas/PowerExtension/v1"
xmlns:vidx1="http://www.garmin.com/xmlschemas/VideoExtension/v1">
<metadata>
<name>favourites</name>
</metadata>

<wpt lat="55.555555" lon="37.777777">
<name> Сарай на даче</name>
<desc>7</desc>
<type>Dacha</type>
<extensions>
<osmand:background>circle</osmand:background>
</extensions>
</wpt>

Почему при запуске скрипта я вместо "Сарай на даче" получаю "Бывшая сельÑ" ? Кодировка XML файла точно UTF-8. И что мне сделать со скриптом, чтобы он начал правильно печатать текст ?

DJ Mogarych
22-09-2023, 08:33
Get-Content $fileIn1 -Encoding UTF8
Правильно отображает?

Если уж размещаете файл примера, то сделайте его корректным.

senglory
22-09-2023, 09:11
Да, с указанием

-Encoding UTF8

отображение наладилось. Спасибо за подсказку!




© OSzone.net 2001-2012