Escape or replace invisible or ambiguous characters when formatting strings
novemberborn opened this issue · comments
Invisible characters such as zero-width joiner and non-breaking space, as well as ambiguous characters like other kinds of spaces, combining characters et cetera should be escaped when strings are formatted.
http://graphemica.com/blocks/control-pictures should be used where the behavior of the original character is preserved. This probably only applies to linebreaks.
If a simple escape sequence exist it should be used. Else characters should be escaped using the \u
sequence.
When a string is formatted as a key it must not include linebreaks.
If a simple escape sequence exist it should be used.
What is a "simple escape sequence"?
What is a "simple escape sequence"?
\t
would be a simple sequence, as opposed to \u0009
.
ANSI codes should also be escaped.
@IssueHunt has funded $40.00 to this issue.
- Submit pull request via IssueHunt to receive this reward.
- Want to contribute? Chip in to this issue via IssueHunt.
- Checkout the IssueHunt Issue Explorer to see more funded issues.
- Need help from developers? Add your repository on IssueHunt to raise funds.
It'd be great if we could show byte differences when characters look the same, like in this example: avajs/ava#2451