mirror of
				https://github.com/pragma-/pbot.git
				synced 2025-11-04 00:27:23 +01:00 
			
		
		
		
	pbot-vm: display escaped malformed Unicode in output instead of U+FFFD
This commit is contained in:
		
							parent
							
								
									757088987d
								
							
						
					
					
						commit
						5bc47b61d9
					
				@ -153,12 +153,19 @@ sub gdbmi_to_hash($text, $makejson = 1) {
 | 
			
		||||
    # when and why the backslashes double up)
 | 
			
		||||
    $text =~ s/\\+(\d{3})/$1 >= 0x20 ? chr oct $1 : "\\\\$1"/ge;
 | 
			
		||||
 | 
			
		||||
    # fix unicode
 | 
			
		||||
    my $octets = decode('UTF-8', $text, Encode::FB_DEFAULT);
 | 
			
		||||
    # escape malformed unicode
 | 
			
		||||
    my $octets;
 | 
			
		||||
 | 
			
		||||
    while (1) {
 | 
			
		||||
        $octets .= decode('UTF-8', $text, Encode::FB_QUIET);
 | 
			
		||||
        last if not length $text;
 | 
			
		||||
        $text =~ s/(.)/sprintf '\\\\x%X', ord $1/e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $text = encode('UTF-8', $octets, Encode::FB_CROAK);
 | 
			
		||||
 | 
			
		||||
    # escape invalid JSON characters
 | 
			
		||||
    $text =~ s/([\x10-\x1f])/sprintf '\\\\x{%x}', ord $1/ge;
 | 
			
		||||
    $text =~ s/([\x10-\x1f])/sprintf '\\\\x%X', ord $1/ge;
 | 
			
		||||
 | 
			
		||||
    # return hashtable decoded from json
 | 
			
		||||
    return decode_json("{$text}");
 | 
			
		||||
 | 
			
		||||
@ -25,7 +25,7 @@ use PBot::Imports;
 | 
			
		||||
# These are set by the /misc/update_version script
 | 
			
		||||
use constant {
 | 
			
		||||
    BUILD_NAME     => "PBot",
 | 
			
		||||
    BUILD_REVISION => 4523,
 | 
			
		||||
    BUILD_REVISION => 4524,
 | 
			
		||||
    BUILD_DATE     => "2022-04-04",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user