Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [PowerShell 5.1] - почему не распознает русский текст в XML? (http://forum.oszone.net/showthread.php?t=354251)

senglory 21-09-2023 23:49 3016463

[PowerShell 5.1] - почему не распознает русский текст в XML?
 
Вот мой код (файл в 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 3016473

Код:

Get-Content $fileIn1 -Encoding UTF8
Правильно отображает?

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

senglory 22-09-2023 09:11 3016475

Да, с указанием

Код:

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


Время: 23:57.

Время: 23:57.
© OSzone.net 2001-