Tampoco tiene mucho misterio. Los caracteres válidos son estos:
Cita:
TABLA DE CODIFICACIÓN DE CARACTERES DEL ESTÁNDAR UNIFI (ISO20022)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r S t u v w x y z
0 1 2 3 4 5 6 7 8 9 / - ? : ( ) . , ‘ + espacio
|
Se pueden sustituir caracteres acentuados para no hacer cagadas con algo como:
Código Delphi
[-]texto := StringReplace(texto,'Ö','O',[rfReplaceAll]);
Y esta función u otra similar te resuelve el resto:
Código Delphi
[-] for i := 1 to Length(texto) do
begin
if not(Ord(texto[i]) in [65..90,97..122,48..57,47,45,63,58,40,41,46,44,39,43,32]) then
texto[i] := '¤'
end;
texto := StringReplace(texto,'¤','',[rfReplaceAll, rfIgnoreCase]);
Suerte.