Giordano,
Hoje as funções realmente só tratam acentos, demais caracteres especiais normalmente são tratados pontualmente, alterar essas funções com mais de uma década para efetuar tal tratamento poderia levar a cenários BEM complicados... Famoso legado!
Enfim, recomendo você encapsular a função FWNoAccent
e adicionar os demais comportamentos desejados, assim como recomendo um outro DEV a fazer na AllTrim.
Algo nessa ideia:
namespace utils.string
//-------------------------------------------------------------------
/*{Protheus.doc} u_removeSpecialChars
Efetua a removação de acentos e caracteres especiais
@param cValue String de entrada
@return cValue String de saída já com a remoção dos devidos caracteres
@author Daniel Mendes
@since 08/10/2020
@version 1.0
*/
//-------------------------------------------------------------------
function u_removeSpecialChars(cValue)
cValue := FWNoAccent(cValue)
cValue := StrTran(cValue, "º", "")
return cValue
No exemplo do AllTrim
, eu mantive a compatibilidade com o binário 13, se for necessário, já nesse exemplo será necessário ter um binário 17 ou superior.
Acompanhando, particularmente uso uns StrTran nervosos para isso!
— Douglas Bichir 08 de Oct de 2020