Skip to content
Snippets Groups Projects
Commit 31f4f0fb52d8 authored by Bob Ippolito's avatar Bob Ippolito
Browse files

Force unicode linebreak characters to be escaped (U+2028 and U+2029)

parent 94d8f87763fc
No related branches found
No related tags found
No related merge requests found
Version 2.1.7 released 2011-XX-XX
* Force unicode linebreak characters to be escaped (U+2028 and U+2029)
http://timelessrepo.com/json-isnt-a-javascript-subset
* Moved documentation from a git submodule to
http://simplejson.readthedocs.org/
......
......@@ -13,7 +13,7 @@
from simplejson.decoder import PosInf
ESCAPE = re.compile(r'[\x00-\x1f\\"\b\f\n\r\t]')
ESCAPE = re.compile(ur'[\x00-\x1f\\"\b\f\n\r\t\u2028\u2029]')
ESCAPE_ASCII = re.compile(r'([\\"]|[^\ -~])')
HAS_UTF8 = re.compile(r'[\x80-\xff]')
ESCAPE_DCT = {
......@@ -24,6 +24,8 @@
'\n': '\\n',
'\r': '\\r',
'\t': '\\t',
u'\u2028': '\\u2028',
u'\u2029': '\\u2029',
}
for i in range(0x20):
#ESCAPE_DCT.setdefault(chr(i), '\\u{0:04x}'.format(i))
......
......@@ -97,3 +97,13 @@
self.assertEquals(json.dumps(doc2), doc_ascii)
self.assertEquals(json.dumps(doc1, ensure_ascii=False), doc_unicode)
self.assertEquals(json.dumps(doc2, ensure_ascii=False), doc_unicode)
def test_ensure_ascii_linebreak_encoding(self):
# http://timelessrepo.com/json-isnt-a-javascript-subset
s1 = u'\u2029\u2028'
s2 = s1.encode('utf8')
expect = '"\\u2029\\u2028"'
self.assertEquals(json.dumps(s1), expect)
self.assertEquals(json.dumps(s2), expect)
self.assertEquals(json.dumps(s1, ensure_ascii=False), expect)
self.assertEquals(json.dumps(s2, ensure_ascii=False), expect)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment