$ x='\001\177'; printf %q ${x@E} $'\001\001\001\177' Probably just needs:
--- a/subst.c +++ b/subst.c @@ -7253,7 +7253,7 @@ string_transform (xc, v, s) break; /* Transformations that modify the variable's value */ case 'E': - ret = ansiexpand (s, 0, strlen (s), (int *)0); + ret = dequote_escapes(ansiexpand (s, 0, strlen (s), (int *)0)); break; case 'P': ret = decode_prompt_string (s);