public void UnicodeEscapeTest() { // UTF-8 Encoding: 0xE8 0xA1 0xA8 // UTF-16 Encoding: 0x8868 // UTF-32 Encoding: 0x00008868 { var src = "\"\\u8868\\u60c5\""; var json = src.ParseAsJson(); var decoded = json.GetString(); Assert.AreEqual("表情", decoded); } { Assert.AreEqual("表"[0], (char)0x8868); } { var src = Utf8String.From("表"); var dst = src.Bytes.ToArray(); Assert.AreEqual(0xE8, dst[0]); Assert.AreEqual(0xA1, dst[1]); Assert.AreEqual(0xA8, dst[2]); } { var src = Utf8String.From("\\u8868"); var ms = new MemoryStream(); JsonString.Unescape(src, new StreamStore(ms)); var dst = ms.ToArray(); Assert.AreEqual(0xE8, dst[0]); Assert.AreEqual(0xA1, dst[1]); Assert.AreEqual(0xA8, dst[2]); } }
public void StringEscapeTest() { { var value = "\""; var escaped = "\\\""; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "\\"; var escaped = "\\\\"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "/"; var escaped = "\\/"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "\b"; var escaped = "\\b"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "\f"; var escaped = "\\f"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "\n"; var escaped = "\\n"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "\r"; var escaped = "\\r"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } { var value = "\t"; var escaped = "\\t"; Assert.AreEqual(escaped, JsonString.Escape(value)); Assert.AreEqual(value, JsonString.Unescape(escaped)); } }