From 95639bc526e672be397c45c637c51bab98364f17 Mon Sep 17 00:00:00 2001 From: Yonik Seeley Date: Sun, 6 Aug 2006 15:29:03 +0000 Subject: [PATCH] json:escape chars<=0x1f, python:encode tab git-svn-id: https://svn.apache.org/repos/asf/incubator/solr/trunk@429137 13f79535-47bb-0310-9956-ffa450edef68 --- .../solr/request/JSONResponseWriter.java | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/java/org/apache/solr/request/JSONResponseWriter.java b/src/java/org/apache/solr/request/JSONResponseWriter.java index a556d5b76fa..2915d607d98 100644 --- a/src/java/org/apache/solr/request/JSONResponseWriter.java +++ b/src/java/org/apache/solr/request/JSONResponseWriter.java @@ -384,6 +384,15 @@ class JSONWriter extends TextResponseWriter { // it might be more efficient to use a stringbuilder or write substrings // if writing chars to the stream is slow. if (needsEscaping) { + + + /* http://www.ietf.org/internet-drafts/draft-crockford-jsonorg-json-04.txt + All Unicode characters may be placed within + the quotation marks except for the characters which must be + escaped: quotation mark, reverse solidus, and the control + characters (U+0000 through U+001F). + */ + for (int i=0; i127) { - unicodeEscape(sb, ch); - needUnicode=true; - } else { - sb.append(ch); - } - } + case '\t': sb.append("\\t"); break; + default: + // we don't strictly have to escape these chars, but it will probably increase + // portability to stick to visible ascii + if (ch<' ' || ch>127) { + unicodeEscape(sb, ch); + needUnicode=true; + } else { + sb.append(ch); + } } + } writer.write( needUnicode ? "u'" : "'"); writer.append(sb);