Mercurial > hg-stable
changeset 27881:ffa599f3f503
encoding: escape U+007F (DEL) character in JSON
RFC 7159 does not state that U+007F must be escaped, but it is widely
considered a control character. As '\x7f' is invisible on a terminal, and
Python's json.dumps() escapes '\x7f', let's do the same.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 16 Jan 2016 18:30:01 +0900 |
parents | b04df9ce1fb0 |
children | 319b0bf6ecc9 |
files | mercurial/encoding.py |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/encoding.py Thu Jan 14 04:14:50 2016 +0000 +++ b/mercurial/encoding.py Sat Jan 16 18:30:01 2016 +0900 @@ -395,8 +395,10 @@ >>> jsonescape('this is a test') 'this is a test' - >>> jsonescape('escape characters: \\0 \\x0b \\t \\n \\r \\" \\\\') - 'escape characters: \\\\u0000 \\\\u000b \\\\t \\\\n \\\\r \\\\" \\\\\\\\' + >>> jsonescape('escape characters: \\0 \\x0b \\x7f') + 'escape characters: \\\\u0000 \\\\u000b \\\\u007f' + >>> jsonescape('escape characters: \\t \\n \\r \\" \\\\') + 'escape characters: \\\\t \\\\n \\\\r \\\\" \\\\\\\\' >>> jsonescape('a weird byte: \\xdd') 'a weird byte: \\xed\\xb3\\x9d' >>> jsonescape('utf-8: caf\\xc3\\xa9') @@ -411,6 +413,7 @@ for x in xrange(32, 256): c = chr(x) _jsonmap[c] = c + _jsonmap['\x7f'] = '\\u007f' _jsonmap['\t'] = '\\t' _jsonmap['\n'] = '\\n' _jsonmap['\"'] = '\\"'