Ruby, 23 18 17 bytes
->s{[*' '..?~]-s} Uses a lambda function as per @sethrin's comments.
Previous versions:
[*' '..?~]-s.chars (' '..'~').to_a-s.chars ->s{[*' '..?~]-s} Uses a lambda function as per @sethrin's comments.
Previous versions:
[*' '..?~]-s.chars (' '..'~').to_a-s.chars