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

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

Alexander_88 26-12-2023 11:03 3021932

вывод кодировки
 
Здравствуйте, есть скрипт, который извлекает ссылки из txt файлов, в результате выводится текстовый файл в кодировке utf 16 le..., можно ли выводить его в кодировке utf 8 ?

Код:

Select-String 'C:\work\POSTS\random\*.txt' -Pattern "^\[url\](.+)\[/url]\[/b]"| Foreach {$_.Matches.Groups[1].Value} > 'C:\work\Scripts\Create random posts\extract links.txt'
если делаю так, то txt выводится с кодировкой utf 8, но пустой :)

Код:

Select-String 'C:\work\POSTS\random\*.txt' -Pattern "^\[url\](.+)\[/url]\[/b]"| Foreach {$_.Matches.Groups[1].Value} > 'C:\work\Scripts\Create random posts\extract links.txt' -Encoding "UTF8"

DJ Mogarych 26-12-2023 12:52 3021934

Код:

"fff" > "C:\temp\fff.txt"
замените на
Код:

"fff" |Out-File "C:\temp\fff.txt" -Encoding utf8

Alexander_88 26-12-2023 14:04 3021936

Спасибо. Сделал так:

Код:

Select-String "C:\work\POSTS\random\*.txt" -Pattern "^\[url\](.+)\[/url]\[/b]"| Foreach {$_.Matches.Groups[1].Value} |Out-File "C:\work\Scripts\Create random posts\extract links.txt" -Encoding UTF8
заглянул в файл в блокнотике, кодировка "utf8 со спецификацией".. в блокнотике нормально отображается.. но я этот файл считываю в delphi функцией
Код:

memo2.Lines.LoadFromFile('C:\Work\Scripts\Create random posts\extract links.txt');
раньше с кодировкой utf16 le в delphi ничего не выводило, сейчас все выводит, но почему то перед всем текстом есть такое

Код:


Если я пересохраняю блокнот (руками) в utf8, то такой файл в delphi нормально считывается. Почему файл сохраняется в "utf8 со спецификацией", а не просто в "utf8" ?
посмотрел скрипт через блокнот и исходный файл.. они все в "utf8".

DJ Mogarych 26-12-2023 14:21 3021937

Проще всего установить в систему Powershell 7 и выполнять скрипты через него (pwsh -file "filename.ps1"), и в кодировке использовать
Код:

-Encoding UTF8NoBOM
Или подбирать альтернативу в текущей версии:
https://stackoverflow.com/questions/...ithout-the-bom

Alexander_88 26-12-2023 15:51 3021940

В общем сделал так:

Код:

Select-String "C:\work\POSTS\random\*.txt" -Pattern "^\[url\](.+)\[/url]\[/b]"| Foreach {$_.Matches.Groups[1].Value} |Out-File 'C:\work\Scripts\Create random posts\extract links1.txt'
Clear-Content "C:\Work\Scripts\Create random posts\extract links.txt"
Get-Content -Path "C:\Work\Scripts\Create random posts\extract links1.txt" | Add-Content -Path "C:\Work\Scripts\Create random posts\extract links.txt"
Remove-Item "C:\Work\Scripts\Create random posts\extract links1.txt"

глупо, но теперь файл "extract links.txt" в кодировке и delphi его нормально читает, что и требовалось :)


Время: 12:57.

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