diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,16 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.8.1.2 -- 2019-07-14
+
+  * Fix HlCChar for one-character octal escapes like '\0' (#82).
+    Due to a bug in pCStringChar, only multi-character octal
+    escapes were being recognized. This affects not just C
+    highlighting, but all of the following highlighters which
+    use HlCChar: fasm eiffel pike objectivec ruby vhdl scala
+    java jsp nasm protobuf pure go objectivecpp gnuassembler povray
+    actionscript c cs opencl boo rhtml elixir.  This fixes a
+    regression introduced in version 0.3.1.
+
 ## 0.8.1.1 -- 2019-06-13
 
   * Improved LaTeX escaping (#78).
diff --git a/skylighting-core.cabal b/skylighting-core.cabal
--- a/skylighting-core.cabal
+++ b/skylighting-core.cabal
@@ -1,5 +1,5 @@
 name:                skylighting-core
-version:             0.8.1.1
+version:             0.8.1.2
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
diff --git a/src/Skylighting/Format/HTML.hs b/src/Skylighting/Format/HTML.hs
--- a/src/Skylighting/Format/HTML.hs
+++ b/src/Skylighting/Format/HTML.hs
@@ -167,23 +167,22 @@
               " padding-left: 4px; }"
           ]
          divspec = [
-            "code.sourceCode > span { display: inline-block; line-height: 1.25; }"
+            "pre > code.sourceCode { white-space: pre; position: relative; }" -- position relative needed for relative contents
+          , "pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }"
+          , "pre > code.sourceCode > span:empty { height: 1.2em; }" -- correct empty line height
           , "code.sourceCode > span { color: inherit; text-decoration: inherit; }"
-          , "code.sourceCode > span:empty { height: 1.2em; }" -- correct empty line height
-          , ".sourceCode { overflow: visible; }" -- needed for line numbers
-          , "code.sourceCode { white-space: pre; position: relative; }" -- position relative needed for relative contents
           , "div.sourceCode { margin: 1em 0; }" -- Collapse neighbours correctly
           , "pre.sourceCode { margin: 0; }" -- Collapse neighbours correctly
           , "@media screen {"
           , "div.sourceCode { overflow: auto; }" -- do not overflow on screen
           , "}"
           , "@media print {"
-          , "code.sourceCode { white-space: pre-wrap; }"
-          , "code.sourceCode > span { text-indent: -5em; padding-left: 5em; }"
+          , "pre > code.sourceCode { white-space: pre-wrap; }"
+          , "pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }"
           , "}"
           ]
          linkspec = [ "@media screen {"
-          , "code.sourceCode > span > a:first-child::before { text-decoration: underline; }"
+          , "pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }"
           , "}"
           ]
 
diff --git a/src/Skylighting/Tokenizer.hs b/src/Skylighting/Tokenizer.hs
--- a/src/Skylighting/Tokenizer.hs
+++ b/src/Skylighting/Tokenizer.hs
@@ -624,7 +624,7 @@
   next <- A.anyChar
   case next of
        c | c == 'x' || c == 'X' -> () <$ A.takeWhile1 (A.inClass "0-9a-fA-F")
-         | c == '0' -> () <$ A.takeWhile1 (A.inClass "0-7")
+         | c == '0' -> () <$ A.takeWhile (A.inClass "0-7")
          | A.inClass "abefnrtv\"'?\\" c -> return ()
          | otherwise -> mzero
 
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -90,7 +90,9 @@
       let perl = maybe (error "could not find Perl syntax") id
                              (lookupSyntax "Perl" sMap)
           cpp  = maybe (error "could not find CPP syntax") id
-                             (lookupSyntax "cpp" sMap) in
+                             (lookupSyntax "cpp" sMap)
+          c    = maybe (error "could not find C syntax") id
+                             (lookupSyntax "c" sMap) in
       [ testCase "perl NUL case" $ Right
              [[(KeywordTok,"s\NUL")
               ,(OtherTok,"b")
@@ -145,8 +147,11 @@
                      "0.1f\n1.0f\n-0.1f\n-1.0F\n-1.0L\n1e3\n-15e+3\n0.f\n1.F\n1.E3"
       , testCase "cpp identifier (#76)" $ Right
            [ [ (NormalTok,"ng_or") ]
-           ] @=? tokenize defConfig cpp
-                     "ng_or"
+           ] @=? tokenize defConfig cpp "ng_or"
+
+      , testCase "c '\\0' (#82)" $ Right
+           [ [ (CharTok,"'\\0'") ]
+           ] @=? tokenize defConfig c "'\\0'"
       ]
     ]
 
