Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] PowerShell i "string.replace"

To: winnt@man.lodz.pl
Subject: Re: [WINNT] PowerShell i "string.replace"
From: "Grzegorz Niemirowski" <grzegorz@grzegorz.net>
Date: Wed, 5 Jun 2019 18:45:14 +0200
radekp@konto.pl <radekp@konto.pl> napisał(a):
Mam plik tekstowy (inserty do mysql) ze skopanymi polskimi znakami.
Wymyśliłem, że ogarnę to powershellem, ale "hjuston mamy problem".
Polskie znaki są zastąpione przez 4-5 znaków takich jak wynika ze skrytpu
poniżej.
$configFiles = Get-ChildItem . *.sql -rec
foreach ($file in $configFiles)
{
    (Get-Content $file.PSPath) |
    Foreach-Object { $_ -replace "0xC3 0x84 0xE2 0x80 0xA6", "ą" } |
    Foreach-Object { $_ -replace "0xC3 0x84 0xE2 0x80 0xA1", "ć" } |
    Foreach-Object { $_ -replace "0xC3 0x84 0xE2 0x84 0xA2", "ę" } |
    Foreach-Object { $_ -replace "0xC3 0x85 0xE2 0x80 0x9A", "ł" } |
    Foreach-Object { $_ -replace "0xC3 0x83 0xC2 0xB3", "A" } |
    Foreach-Object { $_ -replace "0xC3 0x85 0xE2 0x80 0x9E", "ń" } |
    Foreach-Object { $_ -replace "0xC3 0x85 0xE2 0x80 0xBa", "ś" } |
    Foreach-Object { $_ -replace "0xC3 0x85 0xE2 0xBC 0x65 0x6A", "ż" } |
    Set-Content $file.PSPath -Encoding UTF8
pause
}
pause
Ale nie działa poprawnie, "0xC3 0x83 0xC2 0xB3" zamienia mi na ciąg hex
"c4 82 c2 83 c3 82 c5 82 77".

U mnie ten skrypt działa poprawnie. Na pewno te polskie litery są zakodowane za pomocą heksów w stylu C, rozdzielonych spacjami? Wystaw gdzieś może oryginalne pliki.

--
Grzegorz Niemirowski
https://www.grzegorz.net/

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>