replace ascii assumption by isprint()