// escapeMultiByte
%F0%9F%91%BE
// escapeMultiByte - stop at 0x00
P
// escapeMultiByte - unpaired surrogate
%EF%BF%BD
// chars 0x01 - 0x7f
%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20%21%22%23%24%25%26%27%28%29%2A%2B%2C%2D%2E%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E%5F%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F
// unescapeMultiByte - invalid percent sequences
// 

// %

// %A

// %AG

// %GA
A
// %%

// %A%

// %G%

// unescapeMultiByte, unpaired surrogate
%uFFFD
// unescapeMultiByte, stops on zero char
P
// unescapeMultiByte, does not stop on zero char after %
H
// unescapeMultiByte - P
P
// unescapeMultiByte handles lowercase
O
// invader char
%uD83D%uDC7E
// percent-escaped unpaired surrogate
%uDC00
// percent-escaped invalid utf-8
%ED%B0
// percent-escaped invalid utf-8
%F0%9F%91
// percent-escaped invalid utf-8 but lowercase
%F0%9F%91
