diff --git a/src/org/armedbear/lisp/LispCharacter.java b/src/org/armedbear/lisp/LispCharacter.java
--- a/src/org/armedbear/lisp/LispCharacter.java
+++ b/src/org/armedbear/lisp/LispCharacter.java
@@ -553,6 +553,14 @@
     String lower = s.toLowerCase();
     LispCharacter lc = namedToChar.get(lower);
     if (lc!=null) return lc.value;
+    if (lower.length() == 5
+        && lower.startsWith("u")) {
+        try {
+            int i = Integer.parseInt(lower.substring(1, 5), 16);
+            return i;
+        } catch (NumberFormatException e) {};
+    }
+
     if (lower.equals("null"))
       return 0;
     if (lower.equals("bell"))
@@ -617,7 +625,12 @@
       case 127:
         return "Rubout";
       }
-    if (c<0 || c>255) return null;
+
+    if (c > 255) {
+        return "U" + Integer.toString(c, 16);
+    }
+        
+    if (c<0) return null;
     return lispChars.get(c).name;
   }
 
