diff --git a/util/jescape.c b/util/jescape.c
index a2e8decb2c89832f3f04b596719911b672b6b7d9..467df728081dc64597dc9b2e2ae86a8185d7a4ea 100644
--- a/util/jescape.c
+++ b/util/jescape.c
@@ -29,8 +29,8 @@ char *jescape(char *s)
 			case '\t':
 				fputs("\\t", stream); break;
 			default:
-				if (*s <= 0x1f)
-					fprintf(stream, "\\u%04x", *s);
+				if (*s <= 0x1f && *s >= 0)
+					fprintf(stream, "\\u%04hhx", *s);
 				else
 					fputc(*s, stream);
 		}