Converter acentos para Html entity name

398 views
Skip to first unread message

Giolvani Matos

unread,
Oct 9, 2012, 10:53:17 AM10/9/12
to dotn...@googlegroups.com
Pessoal, segue essa tabela para entender melhor o meu problema:
http://www.w3schools.com/tags/ref_entities.asp


Tenho um formulario no meu sistema que usa um editor de texto em javascript que gera um html, e quando eu salvo esse html no banco os acentos vão codificados, porém no formato "Entity name".
Agora preciso buscar dentro desse campo, mas, no meu formulário de pesquisa, quando eu uso o HtmlEncode ele gera uma "Entity number".

A frase:
"Não acho solução"

No banco está:
"Não acho solução"

Ao converter no C#
"Não acho solução"

Existe algum cara pra converter literalmente para o formato entity name?


[]'s
Giolvani

Bruno Fernandes

unread,
Oct 10, 2012, 7:32:17 AM10/10/12
to dotn...@googlegroups.com
Não sei se existe alguma forma "Pronta" pra isso, mas acredito que você pode resolver isso expressões regulares ou com alguns métodos simples:

public static class HTMLParser
{
public static String EntityNumberToEntityName(String pFraseComEntityNumber)
{
while (pFraseComEntityNumber.Contains("&#"))
{
String vNumber = ObterEntre(pFraseComEntityNumber, "&#", ";");
pFraseComEntityNumber = pFraseComEntityNumber.Replace(vNumber, NumberToName(vNumber));
}
return pFraseComEntityNumber;
}

private static String ObterEntre(String pString, String pInicio, String pFinal)
{
String vRetorno = String.Empty;

int vIndiceInicio = pString.IndexOf(pInicio);
if (vIndiceInicio >= 0)
{
pString = pString.Substring(vIndiceInicio + 1);
int vIndiceFinal = pString.IndexOf(pFinal);
if (vIndiceFinal >= 0)
{
vRetorno = pString.Substring(0, vIndiceFinal);
}
}

return vRetorno;
}

Private static String NumberToName(String pNumber)
{
String vRetorno = String.Empty;

if (pNumber == "#227")
vRetorno = "atilde";
else if (pNumber == "#231")
vRetorno = "ccedil";
/* Outros codes
...
else if (pNumber == "...")
vRetorno = "...";
...
*/ 
else // Sugestão: se a sua query for com LIKE e se não achar o code que procura, vc pode colocar um percentual para encontrar
vRetorno = "%";

return vRetorno;
}

Att. 
Bruno Fernandes


Giolvani

--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
 
WebSite: www.dotnetbr.com
 
E-mail do Grupo: dotn...@googlegroups.com
==============================

Giolvani Matos

unread,
Oct 10, 2012, 10:02:56 AM10/10/12
to dotn...@googlegroups.com
Poxa, vlw Bruno!

É difícil mesmo achar um solução pra isso, e eu não queria fazer um if para cada code, saca?

Acho que o melhor jeito é ir no banco e dar um HtmlDecode que os acentos vao ficar todos regulares...
Por enquanto acho que essa é a saída!

[]'s
--
Att.
Giolvani de Matos

Charles Wellington de Oliveira Fortes

unread,
Oct 10, 2012, 12:37:02 PM10/10/12
to dotn...@googlegroups.com
Em 10/10/12, Giolvani Matos<inavlo...@gmail.com> escreveu:
Enviado do meu celular

Ricardo J. A. da Rocha

unread,
Oct 10, 2012, 1:32:16 PM10/10/12
to dotn...@googlegroups.com
Giolvani,

Você já tentou usar:
HttpUtility.HtmlDecode("N&#227;o acho solu&#231;&#227;o")
RETORNO: "Não acho solução"

[]'s

Ricardo J. A. da Rocha
Porto Alegre - RS

Giolvani Matos

unread,
Oct 10, 2012, 6:10:58 PM10/10/12
to dotn...@googlegroups.com
Opa Ricardo,

Cara, problema é que eu teria que converter (Não acho solução) para (N&atilde;o acho solu&ccedil;&atilde;o). Em momento nenhum eu tenho esse (N&#227;o acho solu&#231;&#227;o). Isso é coisa doida mesmo...

Enfim, eu resolvi meu problema, mas foi de outra forma: Fui no banco de dei um HtmlDecode(N&atilde;o acho solu&ccedil;&atilde;o) e eles viraram um (Não acho solução). Dessa forma eu nao preciso converter a palavra na hora da busca...

Mas MUITO obrigado pela ajuda galera!

[]'s

--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
 
WebSite: www.dotnetbr.com
 
E-mail do Grupo: dotn...@googlegroups.com
==============================
Reply all
Reply to author
Forward
0 new messages