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-Key: 1490639166

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

Printed on: April 19, 2024 at 01:04 o'clock

Member: chkdsk
chkdsk Nov 10, 2021 at 14:19:57 (UTC)
Goto Top
Welche Version von PS2EXE verwendest du? Bei mir wird auch nach dem konvertieren alles richtig dargestellt.
Member: aqui
aqui Nov 10, 2021 updated at 15:09:10 (UTC)
Goto Top
ist alles korrekt
...bis auf die Rechtschreibung !! face-wink
Member: In-der-Lernphase
In-der-Lernphase Nov 10, 2021, updated at Nov 11, 2021 at 08:56:26 (UTC)
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!
Member: mbehrens
mbehrens Nov 10, 2021 at 18:34:47 (UTC)
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?
Member: In-der-Lernphase
In-der-Lernphase Nov 11, 2021 updated at 09:17:25 (UTC)
Goto Top
Zitat von @mbehrens:

Kein BOM Header?

Wo stelle ich das ein oder wie packe ich das ins Skript?
Member: TK1987
Solution TK1987 Nov 11, 2021 updated at 13:40:24 (UTC)
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
Member: In-der-Lernphase
In-der-Lernphase Nov 12, 2021 updated at 10:09:01 (UTC)
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