Asynchronous SET NAMES utf8mb4 #1052
Merged
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.
Problem Description:
This change addresses a critical character encoding issue in SourceBans++ that caused garbled text when storing Chinese player names in the database. The root cause was identified as:
Character Set Timing Issue:
The original code used asynchronous
db.Query()to executeSET NAMES utf8mb4, which meant that plugin operations (like INSERT) could begin before the character set configuration was complete.Asynchronous Execution Risk:
When players were banned, if the character set configuration hadn't finished, Chinese characters would be written to the database with incorrect encoding, resulting in garbled text.
Test Environment:
Test Cases Executed:
Chinese player name ban system test
Multi-byte character storage test
Test Results:
Checklist:
✅My code follows the code style of this project.
✅I have read the CONTRIBUTING document.