mirror of
https://github.com/pragma-/pbot.git
synced 2024-11-25 13:29:29 +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…
Reference in New Issue
Block a user