@@ -31,6 +31,7 @@ import Data.Maybe (fromMaybe)
31import Data.Text (Text)
31import Data.Text (Text)
32import qualified Data.Text as T
32import qualified Data.Text as T
33import Data.Monoid ((<>))
33import Data.Monoid ((<>))
34+import Numeric (showHex)
35#if __GLASGOW_HASKELL__ < 710
36#if __GLASGOW_HASKELL__ < 710
36import Control.Applicative
37import Control.Applicative
@@ -410,6 +411,7 @@ encodeChar '\r' = "\\r"
410encodeChar '"' = "\\\""
411encodeChar '"' = "\\\""
411encodeChar '\'' = "\\'"
412encodeChar '\'' = "\\'"
412encodeChar '\\' = "\\\\"
413encodeChar '\\' = "\\\\"
414+encodeChar c | isControl c = T.pack $ "\\x" ++ showHex (fromEnum c) ""
413encodeChar c = T.singleton c
415encodeChar c = T.singleton c
415-- Note: Any lone surrogates will be replaced with U+FFFD
417-- Note: Any lone surrogates will be replaced with U+FFFD