Print `char` using `{:?}` (#41)

diff --git a/src/v0.rs b/src/v0.rs
index ed3099b..4fd6cf0 100644
--- a/src/v0.rs
+++ b/src/v0.rs
@@ -56,21 +56,6 @@
     Ok((Demangle { inner }, &parser.sym[parser.next..]))
 }
 
-fn supported_const_generic_type(ty_tag: u8) -> bool {
-    match ty_tag {
-        // Unsigned integer types.
-        b'h' | b't' | b'm' | b'y' | b'o' | b'j' |
-        // Signed integer types.
-        b'a' | b's' | b'l' | b'x' | b'n' | b'i' |
-        // Bool.
-        b'b' |
-        // Char.
-        b'c' => true,
-
-        _ => false,
-    }
-}
-
 impl<'s> Display for Demangle<'s> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
         let mut printer = Printer {
@@ -554,14 +539,23 @@
             return Ok(());
         }
 
-        if !supported_const_generic_type(ty_tag) {
-            return Err(Invalid);
+        match ty_tag {
+            // Unsigned integer types.
+            b'h' | b't' | b'm' | b'y' | b'o' | b'j' |
+            // Bool.
+            b'b' |
+            // Char.
+            b'c' => {}
+
+            // Signed integer types.
+            b'a' | b's' | b'l' | b'x' | b'n' | b'i' => {
+                // Negation on signed integers.
+                let _ = self.eat(b'n');
+            }
+
+            _ => return Err(Invalid),
         }
 
-        // Negation on signed integers.
-        if let b'a' | b's' | b'l' | b'x' | b'n' | b'i' = ty_tag {
-            let _ = self.eat(b'n');
-        }
         self.hex_nibbles()?;
         Ok(())
     }
@@ -963,10 +957,6 @@
             return Ok(());
         }
 
-        if !supported_const_generic_type(ty_tag) {
-            invalid!(self);
-        }
-
         match ty_tag {
             // Unsigned integer types.
             b'h' | b't' | b'm' | b'y' | b'o' | b'j' => self.print_const_uint()?,
@@ -1035,7 +1025,7 @@
             v = (v << 4) | (c.to_digit(16).unwrap() as u32);
         }
         if let Some(c) = char::from_u32(v) {
-            write!(self.out, "'{}'", c)
+            write!(self.out, "{:?}", c)
         } else {
             invalid!(self)
         }
@@ -1121,6 +1111,10 @@
             "<const_generic::Char<'v'>>"
         );
         t_nohash!(
+            "_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKca_E",
+            "<const_generic::Char<'\\n'>>"
+        );
+        t_nohash!(
             "_RMCs4fqI2P2rA04_13const_genericINtB0_4CharKc2202_E",
             "<const_generic::Char<'∂'>>"
         );