Показать полную графическую версию : [решено] вывод кодировки
Alexander_88
26-12-2023, 11:03
Здравствуйте, есть скрипт, который извлекает ссылки из txt файлов, в результате выводится текстовый файл в кодировке utf 16 le..., можно ли выводить его в кодировке utf 8 ?
Select-String 'C:\work\POSTS\random\*.txt' -Pattern "^\(.+)\\[/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 "^\(.+)\\[/b]"| Foreach {$_.Matches.Groups[1].Value} > 'C:\work\Scripts\Create random posts\extract links.txt' -Encoding "UTF8"
DJ Mogarych
26-12-2023, 12:52
"fff" > "C:\temp\fff.txt"
замените на
"fff" |Out-File "C:\temp\fff.txt" -Encoding utf8
Alexander_88
26-12-2023, 14:04
Спасибо. Сделал так:
Select-String "C:\work\POSTS\random\*.txt" -Pattern "^\(.+)\\[/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
Проще всего установить в систему Powershell 7 и выполнять скрипты через него (pwsh -file "filename.ps1"), и в кодировке использовать
-Encoding UTF8NoBOM
Или подбирать альтернативу в текущей версии:
https://stackoverflow.com/questions/5596982/using-powershell-to-write-a-file-in-utf-8-without-the-bom
Alexander_88
26-12-2023, 15:51
В общем сделал так:
Select-String "C:\work\POSTS\random\*.txt" -Pattern "^\(.+)\\[/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 его нормально читает, что и требовалось :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.