Updated Gson escaper to not escape unicode characters. This is in response to Issue 80.
This commit is contained in:
parent
53f7d26b6d
commit
e4fdea0fc1
@ -77,7 +77,7 @@ class Escaper {
|
||||
int codePoint = Character.codePointAt(plainText, i);
|
||||
charCount = Character.charCount(codePoint);
|
||||
|
||||
if (!((codePoint < 0x20 || codePoint >= 0x7f)
|
||||
if (!(isControlCharacter(codePoint)
|
||||
|| mustEscapeCharInJsString(codePoint))) {
|
||||
continue;
|
||||
}
|
||||
@ -103,6 +103,9 @@ class Escaper {
|
||||
case '\\':
|
||||
out.append("\\\\");
|
||||
break;
|
||||
case '/':
|
||||
out.append("\\/");
|
||||
break;
|
||||
case '"':
|
||||
out.append('\\').append((char) codePoint);
|
||||
break;
|
||||
@ -117,6 +120,12 @@ class Escaper {
|
||||
out.append(plainText, pos, len);
|
||||
}
|
||||
|
||||
private static boolean isControlCharacter(int codePoint) {
|
||||
return codePoint < 0x20
|
||||
|| codePoint == 0x7f
|
||||
|| (codePoint >= 0x80 && codePoint <= 0x9f);
|
||||
}
|
||||
|
||||
private static void appendHexJavaScriptRepresentation(int codePoint, Appendable out)
|
||||
throws IOException {
|
||||
if (Character.isSupplementaryCodePoint(codePoint)) {
|
||||
|
@ -53,7 +53,7 @@ public class InternationalizationTest extends TestCase {
|
||||
public void testStringsWithUnicodeChineseCharactersSerialization() throws Exception {
|
||||
String target = "\u597d\u597d\u597d";
|
||||
String json = gson.toJson(target);
|
||||
String expected = "\"\\u597d\\u597d\\u597d\"";
|
||||
String expected = "\"\u597d\u597d\u597d\"";
|
||||
assertEquals(expected, json);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user