It is a late answer, but I needed the same and didn't find the exisiting answers good enough.
The solution happens to be simple and close to the query that was provided in the question.
The query in the question only misses a needed "COLLATE Latin1_General_BIN":
select * from yourTable where yourColumn COLLATE Latin1_General_BIN LIKE '%[^ -~]%'
COLLATE Latin1_General_BIN
: sets the collation so that comparisons are byte-sensitive. Without this the following pattern match will not work.
[^ -~]
: This a pattern matches any character not in the ASCII printable range (space to tilde). Diacritic characters (accents) fall outside this range. This apears to have the same result as the one you used: [^!-~ ]