This has happened to me, when I got data that had been previously transferred incorrectly between Latin and UTF8.
The following code fixed it for me.
/* adjust the following to add all corrupted German char variables */
%let vars_with_corrupted_chars=name address ;
data corrected;
set has_incorrect_german_chars;
array __array_char_vars $ &vars_with_corrupted_chars.;
/* following code using explicit special characters is a LOT faster than the
equivalent code below using hex values */
__array_char_vars = prxchange('s/Ä/Ä/',-1,__array_char_vars);
__array_char_vars = prxchange('s/ä/ä/',-1,__array_char_vars);
__array_char_vars = prxchange('s/€Ã/ä/',-1,__array_char_vars);
__array_char_vars = prxchange('s/Ö/Ö/',-1,__array_char_vars);
__array_char_vars = prxchange('s/ö/ö/',-1,__array_char_vars);
__array_char_vars = prxchange('s/ü/ü/',-1,__array_char_vars);
__array_char_vars = prxchange('s/Ãœ/Ü/',-1,__array_char_vars);
__array_char_vars = prxchange('s/ÃŒ/ü/',-1,__array_char_vars);
__array_char_vars = prxchange('s/ß/ß/',-1,__array_char_vars);
__array_char_vars = prxchange('s/é/É/',-1,__array_char_vars);
__array_char_vars = prxchange('s/²/2/',-1,__array_char_vars);
__array_char_vars = prxchange('s/³/3/',-1,__array_char_vars);
__array_char_vars = prxchange("s/´/'/",-1,__array_char_vars);
run;
... View more