Te he hecho esta función para los caracteres "raros" en HTML, creo q no me he dejado ninguno estandard
Código Delphi
[-]function CharToHTML(AChar: Char): String;
begin
if AChar in [' ', '!', '#'..'%', #39..';', '=', '?'..'~'] then Result:=AChar
else Result:='&#' + IntToStr(Word(AChar)) + ';';
end;
Creo q la cosa esta en detectar todos los caracteres estandard (ya que son menos q los "raros") asi pues, si es estandard lo dejamos igual, en caso contrario lo codificamos usando
&#valor;
Saludos.