Jump to content
Limestone de cara nova! ×

Acentuação / Acentuacao / Acentua?o


rubensk
 Share

Recommended Posts

Pessoal,

 

Como vocês tem lidado com acentuação nos dados de clientes como nome, endereço etc. ?

Tem armazenado em ISO 8859-1 ?

Tem armazenado em UTF-8 ? Se sim, pq ? 

Tem filtro para acentuação HTML (&acute) ? 

 

A acentuação é baseado no charset que o cliente define após instalação.

 

A instalação padrão é utf-8 e o próprio WHMCS que irá fazer o armazenamento de acordo com o charset x codificação na base de dados.

O cliente em si não se preocupa com isso... os programadores que terão que "se virar nos 30" para codificar/decodificar caso seja necessário fornecer esses dados para uma outra interface.

 

Existe uma variável global no WHMCS que armazena o charset do sistema.

 

 

$CONFIG['Charset'];

 

Caso essa variável não seja retornada faça uma consulta em MySQL

 

 

SELECT * FROM tblconfiguration WHERE setting='Charset';

 

Dependendo do charset, exemplo UTF-8 para ISO-8859-1 utilizando o utf8_encode você resolve isso rapidinho!

Blog sobre WHMCS: http://whmcs.blog.br/
Serviços WHMCS: http://servicos.edvan.com.br/
Módulos WHMCS: http://modulos.edvan.com.br/

Link to comment
Share on other sites

Entendi. Não há risco de um campo entrado por cliente vir com HTMLs tipo &acute ? 

 

Remota mas existe! 

Exemplo se o "doido" do cliente resolver preencher em html kkk

Exemplo (cliente) http://clip2net.com/s/2Lwhhhttp://clip2net.com/s/2Lwju (admin)

Blog sobre WHMCS: http://whmcs.blog.br/
Serviços WHMCS: http://servicos.edvan.com.br/
Módulos WHMCS: http://modulos.edvan.com.br/

Link to comment
Share on other sites

Coloquei filtragem de HTML por via das dúvidas. Ficou assim:<pre class="_prettyXprint _lang-auto _linenums:0">

function _registrobr_normaliza($string) {

$string = str_replace('&amp;nbsp;',' ',$string);

$string = trim($string);

$string = html_entity_decode($string,ENT_QUOTES,'UTF-8');

//Instead of The Normalizer class ... requires (PHP 5 &gt;= 5.3.0, PECL intl &gt;= 1.0.0)

$normalized_chars = array( 'Š'=&gt;'S', 'š'=&gt;'s', 'Ð'=&gt;'Dj','Ž'=&gt;'Z', 'ž'=&gt;'z', 'À'=&gt;'A', 'Á'=&gt;'A', 'Â'=&gt;'A', 'Ã'=&gt;'A', 'Ä'=&gt;'A', 'Å'=&gt;'A', 'Æ'=&gt;'A', 'Ç'=&gt;'C', 'È'=&gt;'E', 'É'=&gt;'E', 'Ê'=&gt;'E', 'Ë'=&gt;'E', 'Ì'=&gt;'I', 'Í'=&gt;'I', 'Î'=&gt;'I', 'Ï'=&gt;'I', 'Ñ'=&gt;'N', 'Ò'=&gt;'O', 'Ó'=&gt;'O', 'Ô'=&gt;'O', 'Õ'=&gt;'O', 'Ö'=&gt;'O', 'Ø'=&gt;'O', 'Ù'=&gt;'U', 'Ú'=&gt;'U', 'Û'=&gt;'U', 'Ü'=&gt;'U', 'Ý'=&gt;'Y', 'Þ'=&gt;'B', 'ß'=&gt;'Ss','à'=&gt;'a', 'á'=&gt;'a', 'â'=&gt;'a', 'ã'=&gt;'a', 'ä'=&gt;'a', 'å'=&gt;'a', 'æ'=&gt;'a', 'ç'=&gt;'c', 'è'=&gt;'e', 'é'=&gt;'e', 'ê'=&gt;'e', 'ë'=&gt;'e', 'ì'=&gt;'i', 'í'=&gt;'i', 'î'=&gt;'i', 'ï'=&gt;'i', 'ð'=&gt;'o', 'ñ'=&gt;'n', 'ò'=&gt;'o', 'ó'=&gt;'o', 'ô'=&gt;'o', 'õ'=&gt;'o', 'ö'=&gt;'o', 'ø'=&gt;'o', 'ù'=&gt;'u', 'ú'=&gt;'u', 'û'=&gt;'u', 'ý'=&gt;'y', 'ý'=&gt;'y', 'þ'=&gt;'b', 'ÿ'=&gt;'y', 'ƒ'=&gt;'f', ' ' =&gt; '');

$string = strtr($string,$normalized_chars);

$string = strtolower($string);

return $string;

}

function _registrobr_StateProvince($sp) {

if (strlen($sp)==2) return $sp;

$estado = _normaliza($sp);

$map = array(

"acre" =&gt; "AC",

"alagoas" =&gt; "AL",

"amazonas" =&gt; "AM",

"amapa" =&gt; "AP",

"bahia" =&gt; "BA",

"baia" =&gt; "BA",

"ceara" =&gt; "CE",

"distritofederal" =&gt; "DF",

"espiritosanto" =&gt; "ES",

"espiritusanto" =&gt; "ES",

"goias" =&gt; "GO",

"goia" =&gt; "GO",

"maranhao" =&gt; "MA",

"matogrosso" =&gt; "MT",

"matogroso" =&gt; "MT",

"matogrossodosul" =&gt; "MS",

"matogrossosul" =&gt; "MS",

"matogrossodesul" =&gt; "MS",

"minasgerais" =&gt; "MG",

"minasgeral" =&gt; "MG",

"para" =&gt; "PA",

"paraiba" =&gt; "PB",

"parana" =&gt; "PR",

"pernambuco" =&gt; "PE",

"pernanbuco" =&gt; "PE",

"piaui" =&gt; "PI",

"riodejaneiro" =&gt; "RJ",

"riograndedonorte" =&gt; "RN",

"riograndenorte" =&gt; "RN",

"rondonia" =&gt; "RO",

"riograndedosul" =&gt; "RS",

"riograndedesul" =&gt; "RS",

"riograndesul" =&gt; "RS",

"roraima" =&gt; "RR",

"santacatarina" =&gt; "SC",

"sergipe" =&gt; "SE",

"saopaulo" =&gt; "SP",

"tocantins" =&gt; "TO"

);

if(!empty($map[$estado])){

return $map[$estado];

} else {

return $sp;

}

}

</pre>

Link to comment
Share on other sites

Pessoal, continuando sobre o tema acentuação, vocês já notaram se os dados com acentuação são passados para módulos (pagamento, registro de domínios) ? Estamos com essa impressão ainda não confirmada de que isso é podado... será alguma opção ? 

 

Módulos de pagamentos a maioria trabalha em UTF-8.

A ResellerClub antigamente tinha restrições com acentuação ( lógica simples, inglês não tem acentuação ).

 

As últimas renovações e registros que fiz não tive problemas ( mesmo enviando caracteres ) veja mais http://docs.whmcs.com/ResellerClub#An_unknown_fault_occured_-_please_contact_support

Blog sobre WHMCS: http://whmcs.blog.br/
Serviços WHMCS: http://servicos.edvan.com.br/
Módulos WHMCS: http://modulos.edvan.com.br/

Link to comment
Share on other sites

Módulos de pagamentos a maioria trabalha em UTF-8.

A ResellerClub antigamente tinha restrições com acentuação ( lógica simples, inglês não tem acentuação ).

 

As últimas renovações e registros que fiz não tive problemas ( mesmo enviando caracteres ) veja mais http://docs.whmcs.com/ResellerClub#An_unknown_fault_occured_-_please_contact_support

 

A API do Registro.br aceitua acentuação, apesar de apenas em ISO 8859-1 e é justamente nisso que estamos trabalhando para converter os dados vindos com o Charset que estiver em uso no WHMCS

O que notamos é que o parâmetro que usavamos vinha sempre em ASCII, mas achamos um onde vem acentuado no Charset do sistema. 

Link to comment
Share on other sites

A API do Registro.br aceitua acentuação, apesar de apenas em ISO 8859-1 e é justamente nisso que estamos trabalhando para converter os dados vindos com o Charset que estiver em uso no WHMCS. 

O que notamos é que o parâmetro que usavamos vinha sempre em ASCII, mas achamos um onde vem acentuado no Charset do sistema. 

 

Isso é simples de resolver... em um outro post até citei a solução.

 

Detectar o charset do cliente e converter se necessário!

Blog sobre WHMCS: http://whmcs.blog.br/
Serviços WHMCS: http://servicos.edvan.com.br/
Módulos WHMCS: http://modulos.edvan.com.br/

Link to comment
Share on other sites

Isso é simples de resolver... em um outro post até citei a solução.

 

Detectar o charset do cliente e converter se necessário!

 

Essa parte já estava no código. O problema é que algumas variáveis são auto-convertidas pelo WHMCS para ASCII, possivelmente por problemas como o da ResellClub. 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.




×
×
  • Create New...