Add support for raw strings #41
Open
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.
Why did I add such feature?
It gives us more precision and control over the bytes that we receive from and send to InSim. More specifically: to avoid data-losses caused by unicode conversion.
I was using LfsUnicodeEncoding2 with an LfsEncodingChecker class that would do a round-trip to check if there is a data loss while using GetString and GetBytes. It worked totally fine as long as the bytes that I received were valid LFS-encoded strings. Someone had manually saved their cfg.txt and it converted some of the Japanese characters in their nickname (
Ply Namein cfg.txt) into UTF-8 replacement characters�, which got encoded asEFBFBD, which isn't a valid sequence in LFS-encoded strings. LfsUnicodeEncoding2 would fall back to?forEFBF, then round-trip would make it3F(ASCII question mark), which would make my checker warn about the data-loss.Related forum thread:
I didn't test all the changes but these packets seem to work fine:
IS_NCN,IS_NPL,IS_CPR,IS_TOC,IS_BTN. I used both unicode strings and raw bytes in my code; they worked fine together.