diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 8efd000b8..b3dd4038b 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -2518,14 +2518,15 @@ FW_makeEdit($$$) } -my %jsTab = ( 92=>'\\\\', 34=>'\\"', 9=>'\\t', 13=>'\\r', 10=>'\\n' ); sub FW_longpollInfo($@) { my $fmt = shift; if($fmt && $fmt eq "JSON") { my @a; - map { my $x=$_; $x=~s/([\\"\t\r\n])/$jsTab{ord($1)}/ge; push @a,$x; } @_; + map { my $x = $_; #Forum 57377, ASCII 0-19 \ " + $x=~ s/([\x00-\x19\x22\x5c])/sprintf '\u%04x', ord($1)/ge; + push @a,$x; } @_; return '["'.join('","', @a).'"]'; } else { return join('<<', @_); diff --git a/fhem/FHEM/98_JsonList.pm b/fhem/FHEM/98_JsonList.pm index e8cc5a9a6..98e148c3e 100644 --- a/fhem/FHEM/98_JsonList.pm +++ b/fhem/FHEM/98_JsonList.pm @@ -55,17 +55,7 @@ JsonEscape($) { my $a = shift; return "null" if(!$a); - my %esc = ( - "\n" => '\n', - "\r" => '\r', - "\t" => '\t', - "\f" => '\f', - "\b" => '\b', - "\"" => '\"', - "\\" => '\\\\', - "\'" => '\\\'', - ); - $a =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/eg; + $a=~ s/([\x00-\x19\x22\x5c])/sprintf '\u%04x', ord($1)/ge; # Forum 57377 return $a; } diff --git a/fhem/FHEM/98_JsonList2.pm b/fhem/FHEM/98_JsonList2.pm index 4ce0913c9..c13f178cf 100644 --- a/fhem/FHEM/98_JsonList2.pm +++ b/fhem/FHEM/98_JsonList2.pm @@ -25,17 +25,7 @@ JsonList2_Escape($) { my $a = shift; return "null" if(!defined($a)); - my %esc = ( - "\n" => '\n', - "\r" => '\r', - "\t" => '\t', - "\f" => '\f', - "\b" => '\b', - "\"" => '\"', - "\\" => '\\\\', - "\'" => '\\\'', - ); - $a =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/eg; + $a=~ s/([\x00-\x19\x22\x5c])/sprintf '\u%04x', ord($1)/ge; # Forum 57377 my $b = "x$a"; $a = "" if(!utf8::decode($b)); # Forum #55318 return $a;