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: "radekp@konto.pl" <radekp@konto.pl>
Date: Mon, 10 Jun 2019 00:28:48 +0200
Wed, 5 Jun 2019 18:45:14 +0200, w
<5cf7f199$0$17361$65785112@news.neostrada.pl>, "Grzegorz Niemirowski"
<grzegorz@grzegorz.net> napisał(-a):

> 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.

To poproszę o podanie kodu na przycięcie pliki do 1000 znaków (mają MB-jty).
To plik txt, ale wszelkie programy wykładają się na tych kodach.

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