in-der-lernphase
Goto Top

Powershell, PS2EXE Umlaute falsch angezeigt

Hallo,

erste Kontaktaufnahme "Programmieren mit der Powershell"! Anfänger! Also auch Anfängerfragen! Ich habe mit Powershell ISE eine GUI erstellt. Auf einem Button eine Beschriftung mit Text vorgenommen. Dieser Text beinhaltet Umlaute. Jetzt ist mir Folgendes aufgefallen, habe auch noch keine Abhilfe durch Recherche gefunden.

Mein Beispiel:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$window = New-Object System.Windows.Forms.Form
$window.Width = 200
$window.Height = 200

$Label = New-Object System.Windows.Forms.Label
$Label.Location = New-Object System.Drawing.Size(10,10)
$Label.Text = "Hiermit kann man Löschen!"  
$Label.AutoSize = $True
$window.Controls.Add($Label)

$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(10,60)
$Button.Size = New-Object System.Drawing.Size(150,50)
$Button.Text = "Löschen"  
$Button.Add_Click({start-process diskmgmt.msc})
$window.Controls.Add($Button)
[void]$window.ShowDialog()[[image 5def84ae10970cfe1122d9f9d5f1da94]]

1. Wenn ich das Skript ausführe, ist alles korrekt dargestellt!
anmerkung 2021-11-10 173337

2. Wenn ich das Skript mit PS2EXE umwandle, werden die Umlaute falsch dargestellt!
anmerkung 2021-11-10 173508

Mir ist bekannt, das es an der Kodierung liegt *.ps1 wird in ANSI abgespeichert. Wenn ich jetzt das Skript mit Notepad++ öffne und die Kodierung umstelle auf UTF-8 und speichere, wird das Skript wieder nach ANSI umgestellt.

Im Internet habe ich auch ein Codezeile gefunden, die in das PS Profile eingetragen werden soll. Hilft aber nicht!
$PSDefaultParameterValues['*:Encoding'] = 'utf8'  

Wo muss ich diese Codezeile aber in meinem Skript hinpacken oder gibt es eine andere Lösung?
Im Voraus an alle Helfenden vielen Dank!

Content-ID: 1490639166

Url: https://administrator.de/contentid/1490639166

Ausgedruckt am: 25.11.2024 um 12:11 Uhr

chkdsk
chkdsk 10.11.2021 um 15:19:57 Uhr
Goto Top
Welche Version von PS2EXE verwendest du? Bei mir wird auch nach dem konvertieren alles richtig dargestellt.
aqui
aqui 10.11.2021 aktualisiert um 16:09:10 Uhr
Goto Top
ist alles korrekt
...bis auf die Rechtschreibung !! face-wink
In-der-Lernphase
In-der-Lernphase 10.11.2021, aktualisiert am 11.11.2021 um 09:56:26 Uhr
Goto Top
Zitat von @chkdsk:

Welche Version von PS2EXE verwendest du? Bei mir wird auch nach dem konvertieren alles richtig dargestellt.

Habe es mit Win-PS2EXE Version: 0.5.0.26 Date: 2021-04-10 und PS2EXE Version: 1.0.10 Date: 2021-04-10 versucht! Programmierumgebung ist ein virtuelles Windows 10 21H1. Powershell Version 5.1.19041.1320.

Zitat von @aqui:

ist alles korrekt
...bis auf die Rechtschreibung !! face-wink

Ihr entdeckt doch, den kleinsten Fehler. Dachte es liegt an den Pixeln! face-wink Hilft mir aber leider nicht weiter!
mbehrens
mbehrens 10.11.2021 um 19:34:47 Uhr
Goto Top
Zitat von @In-der-Lernphase:
anmerkung 2021-11-10 173508

Mir ist bekannt, das es an der Kodierung liegt *.ps1 wird in ANSI abgespeichert. Wenn ich jetzt das Skript mit Notepad++ öffne und die Kodierung umstelle auf UTF-8 und speichere, wird das Skript wieder nach ANSI umgestellt.

Kein BOM Header?
In-der-Lernphase
In-der-Lernphase 11.11.2021 aktualisiert um 10:17:25 Uhr
Goto Top
Zitat von @mbehrens:

Kein BOM Header?

Wo stelle ich das ein oder wie packe ich das ins Skript?
TK1987
Lösung TK1987 11.11.2021 aktualisiert um 14:40:24 Uhr
Goto Top
Moin,

Zitat von @In-der-Lernphase:
Wo stelle ich das ein oder wie packe ich das ins Skript?
in Notepad++ einfach "Kodierung > Konvertiere zu UTF-8-BOM" auswählen und anschließend speichern.

Noch als kleinen Tipp:
Lass besser die Finger von der ISE. Arbeite einfach komplett mit Notepad++, oder falls du unbedingt eine IDE brauchst mit Visual Studio Code.
In Notepad++ kannst du einfach unter "Ausführen > Externes Programm ausführen" folgende Zeile einfügen:
powershell -NoExit -ExecutionPolicy ByPass -Command "cd -Lit '$(CURRENT_DIRECTORY)';. '.\$(FILE_NAME)'"  
Dann auf Speichern klicken, mit Namen und Tastenkombination versehen und fortan kannst du die Skripte direkt mit Notepad++ ausführen lassen (die Skripte müssen wohl immer vor der Ausführung gespeichert sein).

Gruß Thomas
In-der-Lernphase
In-der-Lernphase 12.11.2021 aktualisiert um 11:09:01 Uhr
Goto Top
Super, danke! Schade nur, das MS eine solche Powershell ISE anbietet und auf einen Kodierung Umschalter verzichtet.

Scheinbar soll es an der in Windows 10 mitgelieferten Powershell Version 5.1.19041.1320 liegen. Wenn man die in der Beta vorliegenden, systemweit UTF8 verwenden Option verwendet, funktioniert es. Leider sind dann die Übersetzungen in den Systemfenstern unlesbar. face-wink