Refine PowerShell script encoding compatibility handling

copilot/fix-issue-3921
copilot-swe-agent[bot] 2 months ago committed by GitHub
parent 1cd6c97414
commit 37980130b9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -10,6 +10,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
/**
* 1"PythonInterpreter"使java"Runtime.getRuntime().exec()"(shellpython)
@ -20,6 +21,13 @@ import java.util.List;
* Created by xuxueli on 17/2/25.
*/
public class ScriptUtil {
private static final byte[] UTF_8_BOM = new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
private static final String POWERSHELL_ENCODING_HEADER = "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8"
+ System.lineSeparator()
+ "[Console]::InputEncoding = [System.Text.Encoding]::UTF8"
+ System.lineSeparator()
+ "$OutputEncoding = [System.Text.Encoding]::UTF8"
+ System.lineSeparator();
/**
* make script file
@ -29,15 +37,10 @@ public class ScriptUtil {
* @throws IOException exception
*/
public static void markScriptFile(String scriptFileName, String scriptContent) throws IOException {
if (scriptFileName != null && scriptFileName.toLowerCase().endsWith(".ps1")) {
String powerShellEncodingHeader = "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\r\n"
+ "[Console]::InputEncoding = [System.Text.Encoding]::UTF8\r\n"
+ "$OutputEncoding = [System.Text.Encoding]::UTF8\r\n";
byte[] utf8Bom = new byte[]{(byte) 0xEF, (byte) 0xBB, (byte) 0xBF};
if (scriptFileName != null && scriptFileName.toLowerCase(Locale.ROOT).endsWith(".ps1")) {
try (FileOutputStream fileOutputStream = new FileOutputStream(scriptFileName)) {
fileOutputStream.write(utf8Bom);
fileOutputStream.write(powerShellEncodingHeader.getBytes(StandardCharsets.UTF_8));
fileOutputStream.write(UTF_8_BOM);
fileOutputStream.write(POWERSHELL_ENCODING_HEADER.getBytes(StandardCharsets.UTF_8));
fileOutputStream.write((scriptContent != null ? scriptContent : "").getBytes(StandardCharsets.UTF_8));
}
return;

Loading…
Cancel
Save