Fix the escape and unescape functions behaving differently from JavaScript #336
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.
Overview
When using CryptoJS to encode non-ASCII characters, the resulting encrypted output cannot be decrypted properly.
Problem
During the encryption process, CryptoJS utilizes the deprecated unescape function.
Investigation revealed that the escape and unescape functions in the Python environment operate inconsistently with those in the JavaScript environment.
According to the documentation, unescape() should not be used for decoding URIs. The unescape() function replaces any escape sequences with the characters they represent. Specifically, it replaces any escape sequences in the form of %XX or %uXXXX (where X represents a hexadecimal digit) with the character having the hexadecimal value XX/XXXX. If the escape sequence is not a valid one (for example, if % is followed by one or no hexadecimal digits), it is left unchanged.
fix
A new implementation method for the escape and unescape functions has been provided.