У меня есть сценарий PowerShell для вставки текста сома в документ .html. Однако, поскольку я живу в Дании, у меня есть большая проблема. Я вставляю "æ" "ø" "å" как с заглавными буквами, так и без них. Powershell заменяет эти буквы на «xE6», «xF8» «xE5». В HTML это выглядит так:
Кто-нибудь знает, как это исправить?
Текущие скрипты:
Первый .bat файл
echo off
set /p Date = "Date: "
set /p Location = "Location: "
set /p Amount = "Amount: "
powershell -command "(Get-Content Name_of_file.html) -replace
'Text that gets replaced, using the variables up top' | Set-Content
Name_Of_File.html"
Powershell.exe -executionpolicy remotesigned -File replace_quot.ps1
exit
файл replace_quot.ps1
(Get-Content Name_of_File.html) -replace '"', '"' | set-content
Name_of_File.html
Но, как я уже сказал, если я вставлю æ ø или å, они не будут вставлены правильно.
Ссылка на мой первый пост на случай, если вам понадобится больше контекста: Добавить строку текста в html-документ с помощью cmd / пакетного файла
Надеюсь, я достаточно хорошо это объяснил, если вы чего-то не поняли, то просто напишите, тогда я постараюсь уточнить.
Кодировка - UTF-8
Я считаю, что это та строка, которую вы ищете: <meta charset = "UTF-8">
Так что мое предположение было правильным. Вы объявили HTML-файл с кодировкой UTF-8, но вставили текст с кодировкой Окна-1252. Вы можете изменить объявление charset на <meta charset = "Windows-1252"> и, конечно же, убедиться, что остальная часть HTML-файла действительно закодирована в Windows-1252, что, скорее всего, имеет место, поскольку содержит только символы ASCII. Тогда вам нечего менять в сценарии. В противном случае вам придется преобразовать текст из Windows-1252 в UTF-8, прежде чем вставлять его в файл HTML.
Для второго решения см., Например, Как заменить символы ANSI на символы UTF-8 и сохранить документ в формате UTF-8?, найденный с помощью поиска переполнения стека с поисковым запросом [powershell] конвертировать Windows-1252 UTF-8.
Чтобы интерпретатор Windows PowerShell мог правильно видеть ваши кодовые точки Unicode, вам необходимо сохранить сценарий с использованием UTF8 WITH BOM, в противном случае синтаксический анализатор по умолчанию использует кодировку ANSI. Эта проблема была устранена путем установки по умолчанию UTF8 (не-bom) в PowerShell Core. Вот ответ, который я недавно дал на ту же тему
Командлет Set-Content имеет параметр -Encoding. help Set-Content -Full






Что такое кодировка HTML-файла, поскольку он определяет, какой кодировка символов используется для текстовых данных внутри HTML-файла? Если вы ничего не знаете о кодировке символов, особенно в файлах HTML, прочтите Эта тема в пользовательском форуме UltraEdit.