[base64] Respect string encoding of input in base64_decode filters #1746
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ruby's
Base64.*decode64
functions return strings encoded in theEncoding::ASCII_8BIT
scheme.Ruby's string append has a special case if the string being appended is encoded over 7 bits, meaning that this works flawlessly:
However, for characters outside the 7 bit, such as most UTF-8 characters, this leads to a problem in which Ruby fails to concatenate the string, even if it's technically within a compatible domain.
To solve this problem and allow decoding emojis, I propose we attempt to change the encoding of the base64-decoded string, test if it's in the correct domain, and revert otherwise.