einzeilig UniCode dekodieren Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Rohwedder
Posts: 2306
Joined: 04 Jun 2014, 08:33
Location: Germany

einzeilig UniCode dekodieren

09 Apr 2019, 08:29

Hallo,
in der Sessiondatei von Notepad++ %A_AppData%\Notepad++\session.xml
sind die Sonderzeichen in Dateinamen per UniCode kodiert.
Z.B: Türschloßfräser.txt als Türschloßfräser.txt
Die Dekodierung gelingt mit:

Code: Select all

DateiName = Türschloßfräser.txt
;UniCode dekodieren
While, RegExMatch(DateiName, "&#(x\w{4});", Muster)
	DateiName := StrReplace(DateiName, Muster, Chr("0" Muster1))
;Türschloßfräser.txt
MsgBox,% "DateiName:`n" DateiName
Just for fun:
Kann die 2-zeilige Whileschleife durch ein RegExReplace ersetzt werden?
just me
Posts: 6527
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: einzeilig UniCode dekodieren  Topic is solved

09 Apr 2019, 08:55

Moin,

meines Wissens nicht, weil Du die Treffer $0 ... $n im Parameter Replacement nicht an einen Ausdruck übergeben kannst.
garry
Posts: 1892
Joined: 22 Dec 2013, 12:50

Re: einzeilig UniCode dekodieren

09 Apr 2019, 16:02

danke für's script
habe in Beispiel script , news_reader , hier ergänze ich jedes Unicode Character einzeln ( aab ist variable ganzer text )
( nur wenig Beispiele hier ) :
https://www.autohotkey.com/boards/viewtopic.php?f=10&t=60530

alt:

Code: Select all

stringreplace,aab,aab,ã,ã,all
;- leider existiert auch noch die Variante :  ( dezimal oder Hex )
stringreplace,aab,aab,ü,ü,all
stringreplace,aab,aab,ü,ü,all
konnte dieses script gut gebrauchen , im Moment so ( da ich regex immer noch nicht behersche )
neu:

Code: Select all

stringreplace,aab,aab,#x,#x00,all
;DateiName = Türschloßfräser.txt;
;UniCode dekodieren
While, RegExMatch(aab, "&#(x\w{4});", Muster)
	aab := StrReplace(aab, Muster, Chr("0" Muster1))
return
Rohwedder
Posts: 2306
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: einzeilig UniCode dekodieren

10 Apr 2019, 07:55

Hallo,
mit der Auswertung von Webseitenquelltext habe ich keine Erfahrung.
Klappt das so?

Code: Select all

T = Israel wählt rechts, religiös und natürlich rechtsreligiös
While, RegExMatch(T, "&#(x*\w+);", Muster) ;#x hexadezimalen und # dezimalen Code dekodieren
	T := StrReplace(T, Muster, Chr("0" Muster1))
MsgBox,% T
just me
Posts: 6527
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: einzeilig UniCode dekodieren

10 Apr 2019, 09:52

Moin,

bei langen Texten könnte es sich lohnen, sich die Fundposition zu merken, um dort wieder aufzusetzen:

Code: Select all

T := "Israel wählt rechts, religiös und natürlich rechtsreligiös"
Pos := 1
While (Pos := RegExMatch(T, "&#(x*\w+);", Muster, Pos)) ; #x hexadezimalen und # dezimalen Code dekodieren
	T := StrReplace(T, Muster, Chr("0" Muster1))
MsgBox,% T
Möglicherweise bringt es auch manchmal etwas, wenn man StrReplace() durch RegExReplace() ersetzt, weil man auch hier die Fundposition nutzen kann:

Code: Select all

T := "Israel wählt rechts, religiös und natürlich rechtsreligiös"
Pos := 1
While (Pos := RegExMatch(T, "&#(x*\w+);", Muster, Pos)) ; #x hexadezimalen und # dezimalen Code dekodieren
	T := RegExReplace(T, Muster, Chr("0" Muster1), , , Pos)
MsgBox,% T
Für etwas mehr Zuverlässigkeit kann die Posix-Klasse xdigit sorgen:

Code: Select all

T := "Israel wählt rechts, religiös und natürlich rechtsreligiös"
Pos := 1
While (Pos := RegExMatch(T, "&#(x[[:xdigit:]]{1,4}|\d{1,5});", Muster, Pos)) ; #x hexadezimalen und # dezimalen Code dekodieren
	T := RegExReplace(T, Muster, Chr("0" Muster1), , , Pos)
MsgBox,% T
garry
Posts: 1892
Joined: 22 Dec 2013, 12:50

Re: einzeilig UniCode dekodieren

10 Apr 2019, 15:11

Rohwedder / just me
alle Beispiele funktionieren
Vielen Dank
vorher mehrere Dutzend Zeilen mit jedem special Character :

Code: Select all

stringreplace,aab,aab,ü,ü,all
stringreplace,aab,aab,ü,ü,all
EDIT :
20190411 https://www.ka-news.de , Hier hatte ich kein Ergebnis ( wegen Störung ) , aber natürlich bei Störung oder URL-Aenderung funktioniert script nicht
https://www.ka-news.de/region/karlsruhe/In-eigener-Sache-Serverprobleme-bei-ka-news-behoben-Seite-teilweise-noch-nicht-erreichbar;art6066,2364716

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Google [Bot] and 18 guests