Permitir ou não o uso do caracter "&"???

951 views
Skip to first unread message

Bernardo Hoehl

unread,
Jan 27, 2011, 6:12:11 PM1/27/11
to nfe...@googlegroups.com
Amigos,


Eu tive uma dúvida com uma cliente que queria usar o carácter "&" na razão social do cliente. Por exemplo: Fulano & Cia...

Ao ler na norma da www, vejo que o caracter "&" pode ser tolerado se colocado na convenção usada no html.

Meu xmlsec que assina a NFe, dá pau com ele...

Pensei em fazer um workaround no problema, mas fico no receio de como os "visualizadores de XML de NFe" vão interpretar a coisa.

Apreciaria muito seus comentários sobre o caracter "&" dentro do XML.

Obrigado!


Bernardo

Rio de Janeiro

FerreiraH.

unread,
Jan 27, 2011, 6:40:03 PM1/27/11
to nfe...@googlegroups.com
eu desenvolvi esta rotina utilizo antes de salvar o xml
onde o array é o proprio array que gera o xml
talvez de para utilizar passando o txt ou o proprio xml inteiro
é uma função recursiva
aqui em meu caso so precisei contornar o apostrofe para colocar no banco de dados os nomes  d'joão

function scape_array(&$array, $key) {
        /*
//trocando os caracteres a ser escapados
> (sinal de maior),<
< (sinal de menor),&gt;
& (e-comercial),&amp;
" (aspas),&quot;
' (sinal de apóstrofe).&#39;
*/
         if(is_array($array)) {
            array_walk ($array, array($this, 'scape_array'));//scape_array
         } else {
            //gerando um novo numero de formulario mesmo que o papel nao esteja na impressora
            $order = array("&",">", "<", '"','\'');
            $replace = array('&amp;','&lt;', '&gt;', '&quot;','&#39;');
            $array = str_replace($order, $replace, $array);
            //$array = str_replace('>', '&lt;', $array);
            //$array = str_replace('<', '&gt;', $array);
            //$array = str_replace('&', '&amp;', $array);
            //$array = str_replace('"', '&quot;', $array);
            //$array = str_replace('\'', '&#39;', $array);
                       echo "elaboranfe.php 3921 scape_array $array  <br>\n";
        }
    }







--
Ferreira Helder
B2Stok.net  B2Stok
Voce pode colaborar

FerreiraH.

unread,
Jan 27, 2011, 6:49:57 PM1/27/11
to nfe...@googlegroups.com
Eis um post que fiz anteriormente sobre este assunto

Se voce enviar os caracteres acima para o Sefaz em um xml da NFe sua nota acaba sendo devolvida por erro
estou escapando os caracteres utilizando a função acima.
depois disto passo por um conversor que converte um grande array em um XML
acontece que os caracteres escapados retornão novamente dentro do XML somente o caractere & mantem o &amp;  a aspas simples e duplas voltam a ser aspas
Alguem tem uma ideia melhor doque não utilizar aspas ?
Hoje fui emitir uma nota fiscal para Santa Barbara D'Oeste  e não consegui nem guardar o XML no banco de dados pois a aspa atrapalha.

E um amigo do grupo PHPGTK o autor do livro php orientação a objetos respondeu

Pablo DallOglio

 para phpgtk
mostrar detalhes 03/11/10

Eu uso esse código para converter um vetor para ISO8859-1, talvez ajude:

array_walk_recursive($vetor, array($this, 'arrayToIso8859'));

function arrayToIso8859(&$value, $key)
{
    if (is_scalar($value))
    {
        $value = utf8_decode($value);
    }
}

FerreiraH.

unread,
Jan 27, 2011, 6:42:10 PM1/27/11
to nfe...@googlegroups.com
Desculpa ai
Não da para utilizar esta função que acabei de passar em um arquivo já em XML pois ela bagunçaria todas as tags
Bem que estes grupos poderia ser editaveis (alguem sabe como fazer ?)

Vinicius L. Azevedo

unread,
Feb 1, 2011, 1:16:27 PM2/1/11
to nfe...@googlegroups.com
De acordo com o manual, caracteres especiais tem que ser transformados seguindo a tabela do próprio manual:

< - &lt;
> - &gt;
& - &amp;
" - &quot;
' - &#39;

Tem também o problema dos acentos. Até agora, todos os webservices aceitam aceitos no formato XML entities, MENOS (sempre tem um menos) o webservice do MT. Nesse caso, não deve ter nada acentuado. Para esse caso eu considerei o uso da função a seguir:
function stripaccent($string) {
    return str_replace(
        array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'),
        array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'),
        $string);
}

Isso quase resolve tudo... só que tem caracteres especiais como as bolinhas º ª (primeiro, segunda, etc) que acabam dando problema também.

De novo, a maioria dos estados aceitam o XML entities, menos o MT. Por isso tem que dar um jeito de "pensar" em todos os caracteres especiais que possa ter na nota.

Mais uma coisa... não substitua " º " por algo tipo " o. " pois essa substituição ocupa dois caracteres e pode estourar o limite do campo.

Atenciosamente,
Vinicius L. Azevedo

ZIPLINE TECNOLOGIA LTDA.
Valorizando a sua internet
http://www.zipline.com.br

Direto RS: 55 3026-3336
Direto SP: 11 4063-4830
Direto RJ: 21 4063-8930
Direto MG: 31 4063-9610
Outras localidades: 0800 600 3336

Sistema de gestão empresarial:
http://www.egestor.com.br

Controle de mensalidades:
http://www.fattura.com.br

Emissor de Nota Fiscal Eletrônica:

http://www.nfemais.com.br

Conheça nosso Blog:

http://www.zipline.com.br/blog



2011/1/27 FerreiraH. <helder.m...@gmail.com>
--

Roberto Leite Machado

unread,
Feb 1, 2011, 1:34:29 PM2/1/11
to nfe...@googlegroups.com
Para evitar problemas com webservices "mal configurados" de preferencia removam todos os acentos e caracteres especiais, finjamos que estamos nos EUA e so falamos ingles.

assim sem nenhum acento ;-)

Roberto 

FerreiraH.

unread,
Feb 1, 2011, 1:38:06 PM2/1/11
to nfe...@googlegroups.com
Daria para converter tudo para utf-8 ?
Alguem já tentou ?

Em 1 de fevereiro de 2011 16:16, Vinicius L. Azevedo <vini...@zipline.com.br> escreveu:

Roberto Leite Machado

unread,
Feb 1, 2011, 1:46:46 PM2/1/11
to nfe...@googlegroups.com
O sistema "mal configurado" rejeita e todo o xml deve obrigatoriamente em UTF8.

Roberto 

FerreiraH.

unread,
Feb 1, 2011, 2:03:16 PM2/1/11
to nfe...@googlegroups.com
então não tem como converter o & em utf-8 em vez de &amp;
Como estou em São Paulo aqui funfa e coloco minhas arrobas onde necessario e meus danfes saem com acento e salto de linha com ponto e virgula
Mas já tive dissabor com a cidade Santa Barbara D'oeste
Podia não aceitar também  palavras com sc ss ç etc sofro muito com a acentuação em português e mesmo com grafia, concordância etc 

Vinicius L. Azevedo

unread,
Feb 1, 2011, 2:04:18 PM2/1/11
to nfe...@googlegroups.com
Aqui eu só vou tirar os acentos dos nossos clientes que emitem por MT. Clientes de outros estados não precisam "enfeiar" o Danfe só por causa duma configuração do MT.

Acho que o próprio SimpleXML que eu utilizo acaba transformando os acentos em XML Entities, por isso preciso tirar os acentos antes de mandar assinar.

Ex.:
&#xE1; para á
&#xFA; para ú
&#xBA; para º

Esses são os tipos de caracteres aceitos por todos menos Mato Grosso.


Atenciosamente,
Vinicius L. Azevedo

ZIPLINE TECNOLOGIA LTDA.
Valorizando a sua internet
http://www.zipline.com.br

Direto RS: 55 3026-3336
Direto SP: 11 4063-4830
Direto RJ: 21 4063-8930
Direto MG: 31 4063-9610
Outras localidades: 0800 600 3336

Sistema de gestão empresarial:
http://www.egestor.com.br

Controle de mensalidades:
http://www.fattura.com.br

Emissor de Nota Fiscal Eletrônica:

http://www.nfemais.com.br

Conheça nosso Blog:

http://www.zipline.com.br/blog



2011/2/1 Roberto Leite Machado <roberto...@superig.com.br>

Edwin Schissato

unread,
Feb 1, 2011, 2:36:25 PM2/1/11
to nfe...@googlegroups.com
Aqui onde trabalho estamos removendo toda a acentuação graças aos sistemas mal configurados.

Em 1 de fevereiro de 2011 16:46, Roberto Leite Machado <roberto...@superig.com.br> escreveu:

Bernardo Hoehl

unread,
Feb 2, 2011, 6:52:02 AM2/2/11
to nfe...@googlegroups.com
Roberto,


Bom dia.

Se eu deixar um "&" dentro do XML, o xmlsec que uso para assinar o XML retorna erro.

O próprio Aleksey que escreveu o xmlsec proíbe o uso do "&"...

Achei que vocês gostariam de saber...


Bernardo


==============================

FerreiraH.

unread,
Feb 2, 2011, 9:56:42 AM2/2/11
to nfe...@googlegroups.com
precisa colocar &amp; no lugar ai funciona ?

Bernardo Hoehl

unread,
Feb 2, 2011, 10:00:47 AM2/2/11
to nfe...@googlegroups.com
"&" de qualquer jeito dá erro...

Roberto Leite Machado

unread,
Feb 2, 2011, 3:57:32 PM2/2/11
to nfe...@googlegroups.com
Obrigado;

Esse tipo de informação sempre é muito útil... valeu :-)

Roberto

> > Pablo DallOglio
> > para phpgtk
> > mostrar detalhes
> > 03/11/10
> >
> >
> > Eu uso esse código para converter um vetor para
> > ISO8859-1, talvez ajude:
> >
> > array_walk_recursive($vetor, array($this,
> > 'arrayToIso8859'));
> >
> > function arrayToIso8859(&$value, $key)
> > {
> > if (is_scalar($value))
> > {
> > $value = utf8_decode($value);
> > }
> > }
> >
> >
> >
> >
> >
> > --
> > Ferreira Helder
> > B2Stok.net B2Stok
> > Voce pode colaborar
> >
> >
> > --
> > Você recebeu esta mensagem porque está inscrito no
> > Grupo "NFePHP".
> > Para Postar: nfe...@googlegroups.com
> > Para Sair do Grupo: nfephp

> > +unsub...@googlegroups.com

Vinicius L. Azevedo

unread,
Feb 3, 2011, 7:35:49 AM2/3/11
to nfe...@googlegroups.com
Woa cowboys... &amp; funciona sim.

Temos vários clientes que emitem normalmente assim.


Atenciosamente,
Vinicius L. Azevedo

ZIPLINE TECNOLOGIA LTDA.
Valorizando a sua internet
http://www.zipline.com.br

Direto RS: 55 3026-3336
Direto SP: 11 4063-4830
Direto RJ: 21 4063-8930
Direto MG: 31 4063-9610
Outras localidades: 0800 600 3336

Sistema de gestão empresarial:
http://www.egestor.com.br

Controle de mensalidades:
http://www.fattura.com.br

Emissor de Nota Fiscal Eletrônica:

http://www.nfemais.com.br

Conheça nosso Blog:

http://www.zipline.com.br/blog



2011/2/2 Roberto Leite Machado <roberto...@superig.com.br>

FerreiraH.

unread,
Feb 3, 2011, 9:27:55 AM2/3/11
to nfe...@googlegroups.com
tambem emito assim mas parece que em algumas Sefaz da erro
eu tambem acentuo normalmente
So não lembro o que aconte-ce quando tem Santa Barbar D`oeste  apostrofe

Paulo Gabriel

unread,
Feb 5, 2011, 11:19:47 AM2/5/11
to nfe...@googlegroups.com
Santa Barbara D&apos;oeste

&apos; = '

Mas, eu também defendo a remoção dos acentos e caracteres especiais.

Breno Oliveira

unread,
Feb 25, 2019, 2:47:30 PM2/25/19
to NFePHP
Vou resgatar esse assunto antigo..
quando uso o "&amp;" ou o "&" sozinho razão social do emissor, de qualquer forma o XML está passando e a NF está sendo emitida.
Mas na DANFE a razão social fica escrito "&amp;" em ambos os casos... sabem como faço pra resolver?! deve ser em algum arquivo da sped-da, mas não tenho experiência com classes, não estou sabendo resolver rapidamente, se alguém tiver uma dica eu agradeço.


att

Luis Henrique

unread,
Feb 25, 2019, 2:57:27 PM2/25/19
to nfe...@googlegroups.com
Você tem certeza que apenas "&" no XML é aceito??

Pois recentemente foram implementadas duas correções para resolver este problema:

#1 - (PR #634 | sped-nfe)   O Roberto fez um ajuste na tag "emit" pois o "&" estava sendo convertido duas vezes em &amp; resultando em &amp;amp;
#2 - (PR #192 | sped-da)  Enviei uma correção simples no sped-da para corrigir o problema com a impressão do &amp ;

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Breno Oliveira

unread,
Feb 26, 2019, 6:26:41 AM2/26/19
to nfe...@googlegroups.com
Eu entro a razão social com o & sozinho no "node com os dados do emitente".
No XML realmente está indo <xNome>RSOCIAL &amp;amp; RSOCIAL</xNome>
Mas ao menos em homologação está passando: a NF sendo emitida.. 
Você poderia me dar uma dica de quais arquivos alterar na API para fazer as correções?

Breno Gaudereto Oliveira
(31) 9.9800-4499: Vivo e Whatsapp
(32) 9.9107-4316: TIM


Você recebeu essa mensagem porque está inscrito em um tópico no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse tópico, acesse https://groups.google.com/d/topic/nfephp/LAIbInHtXJ0/unsubscribe.
Para cancelar inscrição nesse grupo e todos os seus tópicos, envie um e-mail para nfephp+un...@googlegroups.com.

Luis Henrique

unread,
Feb 26, 2019, 7:29:52 AM2/26/19
to nfe...@googlegroups.com
Se você utiliza o componente pelo composer, basta atualizar as dependências.

Caso negativo, é só verificar esses 2 PRs, visualizar as modificações e implementa-las na unha.

sped-nfe/#634
sped-da/#192

Breno Oliveira

unread,
Feb 26, 2019, 7:40:52 AM2/26/19
to NFePHP
Realizei as correções (substituindo os arquivos antigos pelos novos.. não sei se tem uma forma mais correta para realizar essas atualizações).
a DANFE agora está aparecendo o & sozinho corretamente. Obrigado
mas no XML permanece &amp;amp;
e os resultados são os mesmos tanto se eu passo o & sozinho ou se passo o $amp;
Vocês estão conseguindo gerar o XML com & correto?! será que devo fazer alteração em outro arquivo tbm?! alterei apenas no sped-nfe/src/Make.php

Breno Oliveira

unread,
Feb 26, 2019, 7:42:04 AM2/26/19
to nfe...@googlegroups.com
eu até instalei tudo pelo composer. qual comando para atualizar dependencia pelo composer?

Breno Gaudereto Oliveira
(31) 9.9800-4499: Vivo e Whatsapp
(32) 9.9107-4316: TIM

Breno Oliveira

unread,
Feb 27, 2019, 7:47:53 AM2/27/19
to NFePHP
Pessoal, mesmo após as correções: 
#1 - (PR #634 | sped-nfe)   O Roberto fez um ajuste na tag "emit" pois o "&" estava sendo convertido duas vezes em &amp; resultando em &amp;amp;
#2 - (PR #192 | sped-da)  Enviei uma correção simples no sped-da para corrigir o problema com a impressão do &amp ;

Meus XMLs estão saindo &amp;amp;. Já estou emitindo NF em produção desta forma.. nao deve ter problema não ne??
Mas se alguém conseguir ajudar a resolver este problema eu agradeço muito!



On Thursday, January 27, 2011 at 9:12:11 PM UTC-2, Bernardo Höhl wrote:
Reply all
Reply to author
Forward
0 new messages