Получить на выходе файл в кодировке UTF8
Доброго времени суток всем!
Давно пытался разобраться с этим вопросом, да как-то особой надобности не было.
При работе с любыми текстовыми файлами после их сохранения получаем файл в кодировке UTF8-BOM. Эту кодировку не распознают некоторые программы.
Может кто сталкивался с таким, подскажите, пожалуйста, как в версии 5.1 получить на выходе файл в кодировке UTF8 без BOM ?
|
DJ Mogarych |
01-02-2021 21:00 2948385 |
|
Это как? Покажите пример кода.
Цитата:
Цитата Uragan66
как в версии 5.1 получить на выходе файл в кодировке UTF8 без BOM ? »
|
Например, так:
Код:
$oUTF8woBOM = New-Object -TypeName 'System.Text.UTF8Encoding' -ArgumentList $False
[System.IO.File]::WriteAllText('C:\Мои проекты\0335\Sample.txt', 'Мама мыла раму', $oUTF8woBOM)
|
да код то любой может быть, к примеру:
Код:
$d = '#EXTM3U'
$url = 'https://api.acestream.me/all?api_version=1.0&api_key=test_api_key'
[System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3")
$aslist = (Invoke-RestMethod -UseBasicParsing -Uri $url) | ForEach{$('#EXTINF:-1,'+$_.name;'http://127.0.0.1:6878/ace/getstream?infohash='+$_.infohash)}
Set-Content .\acestream.m3u -Encoding utf8 -Value $d,$aslist
|
Uragan66, ну, так это тоже не «сохранение файла».
Код:
$d = '#EXTM3U'
$url = 'https://api.acestream.me/all?api_version=1.0&api_key=test_api_key'
[System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3")
$aslist = `
(Invoke-RestMethod -UseBasicParsing -Uri $url) |`
ForEach-Object -Process {
"#EXTINF:-1,$($_.name)"
"http://127.0.0.1:6878/ace/getstream?infohash=$($_.infohash)"
}
$oUTF8woBOM = New-Object -TypeName 'System.Text.UTF8Encoding' -ArgumentList $False
[System.IO.File]::WriteAllText('C:\Мои проекты\0335\acestream.m3u', ($d, ($aslist -join "`r`n") -join "`r`n"), $oUTF8woBOM)
|
greg zakharov |
01-02-2021 23:13 2948406 |
Может чего не знаю в этой жизни, но BOM - это ж всего лишь метка последовательности байтов и для UTF-8 она представлена тремя байтами \xEF\xBB\xBF.
|
Iska, спасибо большое! Код работает ОК. При таком варианте путь для создания файла должен быть только абсолютным, я правильно понял ?
Цитата:
Цитата Iska
это тоже не «сохранение файла» »
|
да, всё верно, это я сразу неправильно написал... Сорри
|
Цитата:
Цитата Uragan66
При таком варианте путь для создания файла должен быть только абсолютным, я правильно понял ? »
|
Да нет, насколько я полагаю. Укажете относительный (как в Вашем примере) — будет браться относительно текущего каталога (не относительно скрипта!). Хотя я и не проверял.
|
greg zakharov |
01-02-2021 23:19 2948409 |
Повелительное наклонение глагола "сорить" пишется с одной "р". И да, для чего Iska нужно сорить? :)
|
Цитата:
Цитата greg zakharov
BOM - это ж всего лишь метка последовательности байтов »
|
да, это конечно так. Но, к примеру, некоторые скрипты (скраперы, написанные на lua) плеера SimpleTV не распознают UTF8-BOM
|
greg zakharov, в ентих наших интернетах пишут, что, начиная с Core 6, по умолчанию командлеты пользуют UTF-8 без BOM. Это так?
|
Цитата:
Цитата greg zakharov
Повелительное наклонение глагола "сорить" пишется с одной "р" »
|
переключение языков на клавиатуре глючит, поэтому sorry на русском написал... Поставил Comfort Keys, утилита удобна, но теперь почему-то глюки с клавиатурой.
|
greg zakharov |
01-02-2021 23:26 2948413 |
Iska, ан нету доверия к тырнетам ня прежде, ня таперича, чай всяк на свой ляд калякает.
Uragan66, ааа! ну так сказали бы "мапатиет" - звучит круче и нет неоднозначностей в трактовке.
|
greg zakharov, угу.
Так можете подтвердить сие?
|
DJ Mogarych |
02-02-2021 09:05 2948426 |
|
Цитата:
Цитата DJ Mogarych
The default value is utf8NoBOM »
|
Это повлияло на переход на UTF8 системно (intl.cpl). Надоело держать разные версии одного и того же скрипта для 5.1 и 6.* на то время. Поэтому сейчас все на UTF8 -- cmd.exe, Far, обе powershell, ISE и вообще практически все, что читает и пишет. Неудобства иногда встречаются, в основном в локализованных интерфейсах приложений.
|
DJ Mogarych, благодарствую.
Foreigner, а я всё на OEM/866 ;).
|
$MyFile = Get-Content C:\callback\callback.bat
$MyFile | Out-File -Encoding "ASCII" C:\callback\callback.bat
|
DJ Mogarych |
05-02-2021 12:16 2948892 |
Попробуйте с файлом, где не только английский.
|
Время: 01:26.
© OSzone.net 2001-