diff --git a/phino.cabal b/phino.cabal
--- a/phino.cabal
+++ b/phino.cabal
@@ -1,7 +1,7 @@
 cabal-version:      3.0
 
 name:               phino
-version:            0.0.0.6
+version:            0.0.0.7
 license:            MIT
 synopsis:           Command-Line Manipulator of 𝜑-Calculus Expressions
 description:        Please see the README on GitHub at <https://github.com/objectionary/phino#readme>
diff --git a/src/Parser.hs b/src/Parser.hs
--- a/src/Parser.hs
+++ b/src/Parser.hs
@@ -23,7 +23,9 @@
 import Data.Sequence (mapWithIndex)
 import Data.Text.Internal.Fusion.Size (lowerBound)
 import Data.Void
+import GHC.Char (chr)
 import Misc (numToHex, strToHex, withVoidRho)
+import Numeric (readHex)
 import Text.Megaparsec
 import Text.Megaparsec.Char (alphaNumChar, char, digitChar, hexDigitChar, letterChar, lowerChar, space1, string, upperChar)
 import qualified Text.Megaparsec.Char.Lexer as L
@@ -73,6 +75,30 @@
   rest <- many (satisfy (`notElem` " \r\n\t,.|':;!?][}{)(⟧⟦") <?> "allowed character")
   return (first : rest)
 
+escapedChar :: Parser Char
+escapedChar = do
+  _ <- char '\\'
+  c <- oneOf ['\\', '"', 'n', 'r', 't', 'b', 'f', 'u']
+  case c of
+    '\\' -> return '\\'
+    '"' -> return '"'
+    'n' -> return '\n'
+    'r' -> return '\r'
+    't' -> return '\t'
+    'b' -> return '\b'
+    'f' -> return '\f'
+    'u' -> unicodeEscape
+    _ -> fail $ "Unknown escape: \\" ++ [c]
+
+unicodeEscape :: Parser Char
+unicodeEscape = do
+  hexDigits <- count 4 hexDigitChar
+  case readHex hexDigits of
+    [(n, "")] ->
+      if (n >= 0 && n <= 0x10FFFF) && not (n >= 0xD800 && n <= 0xDFFF)
+        then return (chr n)
+        else fail ("Invalid Unicode code point: \\u" ++ hexDigits)
+
 function :: Parser String
 function = lexeme $ do
   first <- oneOf ['A' .. 'Z']
@@ -298,7 +324,7 @@
         return (dataExpression "number" (numToHex num)),
       lexeme $ do
         _ <- char '"'
-        str <- manyTill L.charLiteral (char '"')
+        str <- manyTill (choice [escapedChar, noneOf ['\\', '"']]) (char '"')
         return (dataExpression "string" (strToHex str)),
       try (ExMeta <$> meta' 'e' "𝑒"),
       ExDispatch ExThis <$> fullAttribute
diff --git a/test/ParserSpec.hs b/test/ParserSpec.hs
--- a/test/ParserSpec.hs
+++ b/test/ParserSpec.hs
@@ -240,7 +240,8 @@
         "[[\n  x -> \"Hi\",\n  y -> 42\n]]",
         "[[x -> -42, y -> +34]]",
         "⟦x ↦ Φ.org.eolang(z ↦ ξ.f, x ↦ α0, φ ↦ ρ, t ↦ φ, first ↦ ⟦ λ ⤍ Function_name, Δ ⤍ 42- ⟧)⟧",
-        "[[x -> 1.00e+3, y -> 2.32e-4]]"
+        "[[x -> 1.00e+3, y -> 2.32e-4]]",
+        "[[ x -> \"\\u0001\\u0001\"]]"
       ]
       (\expr -> it expr (parseExpression expr `shouldSatisfy` isRight))
 
