@@ -164,6 +164,11 @@ string s = '"' : concatMap encodeChar s ++ "\""
164 encodeChar '\r' = "\\r"
164 encodeChar '\r' = "\\r"
165 encodeChar '"' = "\\\""
165 encodeChar '"' = "\\\""
166 encodeChar '\\' = "\\\\"
166 encodeChar '\\' = "\\\\"
167+ encodeChar c | fromEnum c > 0xFFFF = "\\u" ++ showHex highSurrogate "" ++ "\\u" ++ showHex lowSurrogate ""
169+ (h, l) = divMod (fromEnum c - 0x10000) 0x400
170+ highSurrogate = h + 0xD800
171+ lowSurrogate = l + 0xDC00
167 encodeChar c | fromEnum c > 0xFFF = "\\u" ++ showHex (fromEnum c) ""
172 encodeChar c | fromEnum c > 0xFFF = "\\u" ++ showHex (fromEnum c) ""
168 encodeChar c | fromEnum c > 0xFF = "\\u0" ++ showHex (fromEnum c) ""
173 encodeChar c | fromEnum c > 0xFF = "\\u0" ++ showHex (fromEnum c) ""
169 encodeChar c | fromEnum c < 0x10 = "\\x0" ++ showHex (fromEnum c) ""
174 encodeChar c | fromEnum c < 0x10 = "\\x0" ++ showHex (fromEnum c) ""