[python-brasil] Caracteres especiais UTF8

1,060 views
Skip to first unread message

bruno.borges100

unread,
Aug 3, 2009, 2:19:20 PM8/3/09
to python...@yahoogrupos.com.br
Boa tarde,

Estou criando um xml, utilizando a libxml2 e ocorre o seguinte problema:

Quando existem caracteres especiais como: &,<,>,'," o xml não consegue "entender". Gostaria de saber como substituir esses, pelos seus códigos de forma que eu possa criar o xml sem problemas.

O xml é para a Nfe. No manual é citado esse problema e cita alguns exemplos de códigos como: & = &amp; " = &quot; etc. Mas esses códigos são para HTML.


Agradeço
Bruno Borges

------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Danilo Cabello

unread,
Aug 3, 2009, 7:20:21 PM8/3/09
to python...@yahoogrupos.com.br
2009/8/3 bruno.borges100 <bruno....@gmail.com>:

> Estou criando um xml, utilizando a libxml2 e ocorre o seguinte problema:
>
> Quando existem caracteres especiais como: &,<,>,'," o xml não consegue "entender". Gostaria de saber como substituir esses, pelos seus códigos de forma que eu possa criar o xml sem problemas.
>
> O xml é para a Nfe. No manual é citado esse problema e cita alguns exemplos de códigos como: & = &amp; " = &quot; etc. Mas esses códigos são para HTML.

Já tentou usar CDATA[1] nos elementos com esses caracteres?

[1] - http://www.w3schools.com/xml/xml_cdata.asp

Leonardo Santagada

unread,
Aug 3, 2009, 7:52:45 PM8/3/09
to python...@yahoogrupos.com.br

On Aug 3, 2009, at 3:19 PM, bruno.borges100 wrote:

> Boa tarde,
>
> Estou criando um xml, utilizando a libxml2 e ocorre o seguinte
> problema:
>
> Quando existem caracteres especiais como: &,<,>,'," o xml não
> consegue "entender". Gostaria de saber como substituir esses, pelos
> seus códigos de forma que eu possa criar o xml sem problemas.
>
> O xml é para a Nfe. No manual é citado esse problema e cita alguns
> exemplos de códigos como: & = &amp; " = &quot; etc. Mas esses
> códigos são para HTML.


Sim e funcionam em xml até onde eu lembro (tento me manter longe de
xml o máximo possível). Tu já tentou usar eles e não funcionou ou tu
só supos que não iam funcionar e nem tentou? Não ficou claro no teu
email, mas provavelmente os entity codes são o suficiente. Só pra
lembrar tu não precisa fazer essa tradução manualmente, tem uma função
xml.encode em algum lugar da stdlib.


--
Leonardo Santagada
santagada at gmail.com

bruno.borges100

unread,
Aug 4, 2009, 7:11:36 AM8/4/09
to python...@yahoogrupos.com.br
Leonardo,

Eu já tentei, quando tento criar o xml com caracter especial, até cria mas da problema, por exemplo: Se eu colocar em uma tag o conteúdo: INDUSTRIA & COMERCIO, resulta em: <Nome>INDUSTRIA </Nome>.

Vou dar uma olhada no xml.encode, obrigado.

Bruno Borges

caio ariede

unread,
Aug 3, 2009, 8:06:03 PM8/3/09
to python...@yahoogrupos.com.br
Transforme & em &amp; < em &lt; > em &gt; ' em &apos; e " em &quot;

São os únicos caracteres não permitidos no XML, até onde sei.

O resto você pode usar UTF-8 sem problemas.

>>> from xml.sax.saxutils import escape
>>> escape('< & >')
'&lt; &amp; &gt;'

http://wiki.python.org/moin/EscapingXml

Caio Ariede
http://caioariede.com/

2009/8/3 Leonardo Santagada <sant...@gmail.com>:

bruno.borges100

unread,
Aug 4, 2009, 7:07:33 AM8/4/09
to python...@yahoogrupos.com.br
Sim, eu perguntei para o pessoal da receita e os códigos citados no manual se referem a html, então quando eu substituo aqueles que estão citados no manual e é retornado Falha de Schema.

Para a codificação UTF-8, os códigos são outros.

Bruno Borges

>
> Bruno,
>
> Segundo o manual da NFe, é possível utilizar os simbolos, página 69, na
> versão 2.02a
>
> Transcrevendo o trecho:
>
> 5.3 Tratamento de caracteres especiais no texto de XML
> Todos os textos de um documento XML passam por uma análise do "parser"
> específico da
>
> Pág. 69 / 144
> linguagem. Alguns caracteres afetam o funcionamento deste "parser", não
> podendo
> aparecer no texto de uma forma não controlada.
> Os caracteres que afetam o "parser" são:
> • > (sinal de maior),
> • < (sinal de menor),
> • & (e-comercial),
> • " (aspas),
> • ` (sinal de apóstrofe).
> Alguns destes caracteres podem aparecer especialmente no campo de Razão
> Social,
> Endereço e Informação Adicional. Para resolver esses casos, é recomendável o
> uso de uma
> seqüência de "escape" em substituição ao caractere que causa o problema.
> Ex. a denominação: DIAS & DIAS LTDA deve ser informada como: DIAS &amp; DIAS
> LTDA
> no XML para não afetar o funcionamento do "parser".
> caractere seqüência de escape
> < &lt;
> > &gt;
> & &amp;
> " &quot;
> ' &#39;
>
> Abração
>
> 2009/8/3 Leonardo Santagada <santagada@...>

bruno.borges100

unread,
Aug 4, 2009, 7:17:37 AM8/4/09
to python...@yahoogrupos.com.br
Danilo,

Estou dando uma olhada no site que vc passou, vou testar aqui.

Obrigado
Bruno Borges

>
> 2009/8/3 bruno.borges100 <bruno.python@...>:

Leonardo Santagada

unread,
Aug 4, 2009, 2:15:15 PM8/4/09
to python...@yahoogrupos.com.br

On Aug 4, 2009, at 8:11 AM, bruno.borges100 wrote:

> Leonardo,
>
> Eu já tentei, quando tento criar o xml com caracter especial, até
> cria mas da problema, por exemplo: Se eu colocar em uma tag o
> conteúdo: INDUSTRIA & COMERCIO, resulta em: <Nome>INDUSTRIA </Nome>.

Sim tinha que ser INDUSTRIA &amp; COMERCIO, é assim que a tabela de
tradução funciona.

Daniel Gonçalves

unread,
Aug 4, 2009, 3:32:10 PM8/4/09
to python...@yahoogrupos.com.br
Só para dar os meus 2 centavos:

Os elementos citados tais como "&amp;" fazem parte das entidades XML
válidas. Lembre-se que HTML é um sub-conjunto de XML. Então veja o
trecho de código seguinte:

>>> import cgi
>>> print cgi.escape("INDUSTRIA & COMERCIO")
INDUSTRIA &amp; COMERCIO

Portanto, o seguinte fragmento deve funcionar em qualquer parser XML.

>>> xml = """<?xml version="1.0" encoding="UTF-8" ?>
<nome>INDUSTRIA &amp; COMERCIO</nome>"""

>>> import amara
>>> doc = amara.parse(xml)
>>> print doc.nome
INDUSTRIA & COMERCIO

2009/8/4 Leonardo Santagada <sant...@gmail.com>:

>> ,----------------------------------------------------------.


>> | Antes de enviar um e-mail para o grupo leia: |
>> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
>> | E se você é usuário do BOL lembre-se de cadastrar o |
>> | e-mail do grupo na lista branca do seu sistema anti-spam. |

>> `----------------------------------------------------------´Links


>> do Yahoo! Grupos
>>
>>
>
> --
> Leonardo Santagada
> santagada at gmail.com
>
>

--
Daniel Gonçalves
Base4 Sistemas Ltda.
[www.base4.com.br]
[twitter.com/spanazzi]

bruno.borges100

unread,
Aug 4, 2009, 4:50:18 PM8/4/09
to python...@yahoogrupos.com.br
A criação do xml está dando certo, estou utilizando o escape. Então referente a criação está tudo Ok.

Mas o problema ainda persiste, quando envio a NFe para a sefaz, está retornando Falha de schema. Pode ser algum problema no ambiente de homologação ou talvez outra coisa errada no xml, mas acho dificil, pq quando eu tiro o destinatario que é o único que está com caracter especial, o envio da certo. Vou tentar resolver aqui.


Agradeço a ajuda de todos

Pablo Grigoletti

unread,
Aug 4, 2009, 5:12:51 PM8/4/09
to python...@yahoogrupos.com.br
Dá uma olhada no manual da sefaz...
Se não me engano nao pode ter caracteres especiais, acentos, ...

--- Em ter, 4/8/09, bruno.borges100 <bruno....@gmail.com> escreveu:

De: bruno.borges100 <bruno....@gmail.com>
Assunto: [python-brasil] Re: Caracteres especiais UTF8
Para: python...@yahoogrupos.com.br
Data: Terça-feira, 4 de Agosto de 2009, 17:50



A criação do xml está dando certo, estou utilizando o escape. Então referente a criação está tudo Ok.

Mas o problema ainda persiste, quando envio a NFe para a sefaz, está retornando Falha de schema. Pode ser algum problema no ambiente de homologação ou talvez outra coisa errada no xml, mas acho dificil, pq quando eu tiro o destinatario que é o único que está com caracter especial, o envio da certo. Vou tentar resolver aqui.

Agradeço a ajuda de todos

Bruno Borges











____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

Daniel Gonçalves

unread,
Aug 4, 2009, 5:35:17 PM8/4/09
to python...@yahoogrupos.com.br
Bruno, também tenho interesse nestes detalhes de NFe. Poste o XML no
"Lodge It" (ou qualquer outro) para nós. Quem sabe?! :-)

2009/8/4 bruno.borges100 <bruno....@gmail.com>:


>
>
> A criação do xml está dando certo, estou utilizando o escape. Então
> referente a criação está tudo Ok.
>
> Mas o problema ainda persiste, quando envio a NFe para a sefaz, está
> retornando Falha de schema. Pode ser algum problema no ambiente de
> homologação ou talvez outra coisa errada no xml, mas acho dificil, pq quando
> eu tiro o destinatario que é o único que está com caracter especial, o envio
> da certo. Vou tentar resolver aqui.
>
> Agradeço a ajuda de todos
> Bruno Borges
>
>

--

Daniel Gonçalves
Base4 Sistemas Ltda.
[www.base4.com.br]
[twitter.com/spanazzi]

bruno.borges100

unread,
Aug 5, 2009, 8:52:33 AM8/5/09
to python...@yahoogrupos.com.br
É, não pode ter, os caracteres devem ser tratados antes da criação do xml. Isso está sendo feito através do uso do escape, citado anteriormente.

Bruno Borges

--- Em python...@yahoogrupos.com.br, Pablo Grigoletti <pablogrigoletti@...> escreveu


>
> Dá uma olhada no manual da sefaz...
> Se não me engano nao pode ter caracteres especiais, acentos, ...
>

> --- Em ter, 4/8/09, bruno.borges100 <bruno.python@...> escreveu:

Danilo Cabello

unread,
Aug 5, 2009, 9:06:01 AM8/5/09
to python...@yahoogrupos.com.br
2009/8/5 bruno.borges100 <bruno....@gmail.com>:

> É, não pode ter, os caracteres devem ser tratados antes da criação do xml. Isso está sendo feito através do uso do escape, citado anteriormente.

E aí que fim levou então? Deu tudo certo a geração do XML para a NFe?

bruno.borges100

unread,
Aug 5, 2009, 9:23:19 AM8/5/09
to python...@yahoogrupos.com.br
Danilo,

Ainda não está sendo aceito, estou verificando com o pessoal da Sefaz o que pode está acontecendo. Quando esse problema for resolvido eu posto aqui o que era.

Bruno Borges

--- Em python...@yahoogrupos.com.br, Danilo Cabello <danilo.cabello@...> escreveu
>
> 2009/8/5 bruno.borges100 <bruno.python@...>:

bruno.borges100

unread,
Aug 5, 2009, 4:43:36 PM8/5/09
to python...@yahoogrupos.com.br
De acordo com a SEFAZ:

"""
Bom dia Bruno,

Para a codificação UTF-8 o caracter "&" não é representado pelos códigos "&amp;". Estes códigos se refere àquele caracter na linguagem HTML. Verifique o padrão UTF-8 para o preenchimento correto das informações da NFe.

Atenciosamente,

Hugo Marciano de Melo
Analista de Sistemas e Suporte - Nota Fiscal Eletronica
Secretaria da Fazenda do Estado de Goias

bruno.borges100

unread,
Aug 5, 2009, 9:28:07 AM8/5/09
to python...@yahoogrupos.com.br
O "problema" se encontra nessa tag,
<xNome>AGUIAR &amp; SILVA LTDA</xNome>

o restante do xml está correto pois eu alterei o nome para "AGUIAR SILVA LTDA" e gerei novamente o xml de envio resultando em
<xNome>AGUIAR SILVA LTDA</xNome> e a nota foi autorizada.

:[
Qualquer novidade posto aqui
Bruno Borges


--- Em python...@yahoogrupos.com.br, Daniel Gonçalves <daniel@...> escreveu


>
> Bruno, também tenho interesse nestes detalhes de NFe. Poste o XML no
> "Lodge It" (ou qualquer outro) para nós. Quem sabe?! :-)
>

> 2009/8/4 bruno.borges100 <bruno.python@...>:

Daniel Gonçalves

unread,
Aug 5, 2009, 5:11:35 PM8/5/09
to python...@yahoogrupos.com.br
(desculpem o flood)
Ou então Bruno, inverta e faça a seguinte pergunta ao SEFAZ: "Tenho
vários clientes cuja razão social incluem um símbolo &. O que eu faço
nestes casos?". E vejamos o que eles respondem.

2009/8/5 bruno.borges100 <bruno....@gmail.com>:


>
>
> De acordo com a SEFAZ:
>
> """
> Bom dia Bruno,
>
> Para a codificação UTF-8 o caracter "&" não é representado pelos códigos
> "&amp;". Estes códigos se refere àquele caracter na linguagem HTML.
> Verifique o padrão UTF-8 para o preenchimento correto das informações da
> NFe.
>
> Atenciosamente,
>
> Hugo Marciano de Melo
> Analista de Sistemas e Suporte - Nota Fiscal Eletronica
> Secretaria da Fazenda do Estado de Goias
> """
>
>

--

Daniel Gonçalves
Base4 Sistemas Ltda.
[www.base4.com.br]
[twitter.com/spanazzi]

Daniel Gonçalves

unread,
Aug 5, 2009, 5:08:58 PM8/5/09
to python...@yahoogrupos.com.br
Olha Bruno, não sou nenhum especialista, mas a explicação dele não faz
o menor sentido.
Faça o seguinte teste: abra um editor de textos e crie um XML pequeno,
uma ou duas tags e salve-o. Abra o arquivo no Firefox e veja se ele
reclama.

O Hugo, do SEFAZ referiu-se ao HTML como se fosse uma "outra coisa".


HTML é um sub-conjunto de XML.

Muito estranho! Mesmo por que, a coisa comum do mundo é o tal "E
comercial" em razões sociais.

2009/8/5 bruno.borges100 <bruno....@gmail.com>:


>
>
> De acordo com a SEFAZ:
>
> """
> Bom dia Bruno,
>
> Para a codificação UTF-8 o caracter "&" não é representado pelos códigos
> "&amp;". Estes códigos se refere àquele caracter na linguagem HTML.
> Verifique o padrão UTF-8 para o preenchimento correto das informações da
> NFe.
>
> Atenciosamente,
>
> Hugo Marciano de Melo
> Analista de Sistemas e Suporte - Nota Fiscal Eletronica
> Secretaria da Fazenda do Estado de Goias
> """
>
>

--

Daniel Gonçalves
Base4 Sistemas Ltda.
[www.base4.com.br]
[twitter.com/spanazzi]

Joao S. O. Bueno

unread,
Aug 5, 2009, 6:16:13 PM8/5/09
to python...@yahoogrupos.com.br
On Wednesday 05 August 2009, Daniel Gonçalves wrote:
> Olha Bruno, não sou nenhum especialista, mas a explicação dele não faz
> o menor sentido.

concordo - e não só pelo lado do XML, mas:


>
> 2009/8/5 bruno.borges100 <bruno....@gmail.com>:
> > De acordo com a SEFAZ:
> >
> > """
> > Bom dia Bruno,
> >
> > Para a codificação UTF-8 o caracter "&" não é representado pelos códigos
> > "&amp;". Estes códigos se refere àquele caracter na linguagem HTML.
> > Verifique o padrão UTF-8 para o preenchimento correto das informações da
> > NFe.
> >
> > Atenciosamente,
> >
> > Hugo Marciano de Melo
> > Analista de Sistemas e Suporte - Nota Fiscal Eletronica
> > Secretaria da Fazenda do Estado de Goias
> > """

Bom "&" em utf-8 é exatamente igual "&" em ASCII -- o caractere representado
pelo código "38" ou seja: o que ele falou também não faz o menor sentido por
aqui.

José Ricardo Borba

unread,
Aug 5, 2009, 11:37:28 AM8/5/09
to python...@yahoogrupos.com.br
Pessoal,

Sou novo aqui na lista e estou ainda "engatinhando" em Python. Mas estou
vendo o pessoal se debatendo com um problema com XML que, a princípio,
nem é Python. Então posso ajudar !!! Tenho um pouquinho de conhecimento
de XML pois programo com PHP há algum tempo e já me deparei com alguns
problemas deste tipo, mas nada com o governo!!!

http://xml.silmaril.ie/authors/specials/

Neste artigo, o autor coloca que, sem definir o DTD, o XML assume
algumas formas padrão para ALGUNS caracteres especiais. Em HTML 4, segue
uma tabela com as notações em código mnemônico e em o código numérico,
no link abaixo.

http://www.laughtergenealogy.com/bin/header/ascii3.html

Dá uma olhada neste post aqui e vê se tem algo assim (o DTD) na NFe.
Assim já dá para eu entender como a NFe funciona (se é que funciona....).

Abraço.

Ricardo

http://www.macoratti.net/vb_xml2.htm

bruno.borges100 escreveu:

Armando Roque

unread,
Aug 6, 2009, 8:41:42 AM8/6/09
to python...@yahoogrupos.com.br
Bruno,

Tu já tentou validar o seu XML? Na tua máquina mesmo.
Talvez o retorno do erro seja mais amigável ou mais detalhado.

Até,

2009/8/5 bruno.borges100 <bruno....@gmail.com>

>
>
> De acordo com a SEFAZ:
>
> """
> Bom dia Bruno,
>
> Para a codificação UTF-8 o caracter "&" não é representado pelos códigos
> "&amp;". Estes códigos se refere àquele caracter na linguagem HTML.
> Verifique o padrão UTF-8 para o preenchimento correto das informações da
> NFe.
>
> Atenciosamente,
>
> Hugo Marciano de Melo
> Analista de Sistemas e Suporte - Nota Fiscal Eletronica
> Secretaria da Fazenda do Estado de Goias
> """
>
>
>

--
Armando Roque Ferreira Pinto
Analista de sistemas
(65) 8116 8844


[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

bruno.borges100

unread,
Aug 6, 2009, 9:10:05 AM8/6/09
to python...@yahoogrupos.com.br
Armando,

O xml está correto, está sendo gerado normalmente, depois abro ele e ta tudo blz. O problema é que o servidor da Sefaz não está aceitando ele. Já deixou de ser um problema de xml, agora é apenas um problema de Nota Fiscal Eletrônica.

--- Em python...@yahoogrupos.com.br, Armando Roque <dropsdef@...> escreveu


>
> Bruno,
>
> Tu já tentou validar o seu XML? Na tua máquina mesmo.
> Talvez o retorno do erro seja mais amigável ou mais detalhado.
>
> Até,
>

> 2009/8/5 bruno.borges100 <bruno.python@...>

bruno.borges100

unread,
Aug 6, 2009, 9:47:09 AM8/6/09
to python...@yahoogrupos.com.br
Ricardo,

Dei uma olhada nos links passados, usando os códigos numéricos também tivemos problemas, uma vez que ele resultou no mesmo código padrão.

Imagino que o problema não seja mais de xml, apenas de nota fiscal eletrônica.

Agradeço a colaboração

Bruno Borges

--- Em python...@yahoogrupos.com.br, José Ricardo Borba <jrborba.rs@...> escreveu


>
> Pessoal,
>
> Sou novo aqui na lista e estou ainda "engatinhando" em Python. Mas estou
> vendo o pessoal se debatendo com um problema com XML que, a princípio,
> nem é Python. Então posso ajudar !!! Tenho um pouquinho de conhecimento
> de XML pois programo com PHP há algum tempo e já me deparei com alguns
> problemas deste tipo, mas nada com o governo!!!
>
> http://xml.silmaril.ie/authors/specials/
>
> Neste artigo, o autor coloca que, sem definir o DTD, o XML assume
> algumas formas padrão para ALGUNS caracteres especiais. Em HTML 4, segue
> uma tabela com as notações em código mnemônico e em o código numérico,
> no link abaixo.
>
> http://www.laughtergenealogy.com/bin/header/ascii3.html
>
> Dá uma olhada neste post aqui e vê se tem algo assim (o DTD) na NFe.
> Assim já dá para eu entender como a NFe funciona (se é que funciona....).
>
> Abraço.
>
> Ricardo
>
> http://www.macoratti.net/vb_xml2.htm

------------------------------------

Rodolfo S. Carvalho

unread,
Aug 6, 2009, 11:13:21 AM8/6/09
to python...@yahoogrupos.com.br
bruno,

2009/8/6 bruno.borges100 <bruno....@gmail.com>:
>
>
> Tivemos progresso, com o uso do código numérico!
>
> Fui direto na string final (leitura do xml que foi gerado) peguei o código
> &amp; que estava nela e substitui pelo seu código que é &#38;
>
> Essa string foi enviada e aceita.
>
> =D
> :]
>
> Ou seja, no final é necessário que os caracteres especiais estejam
> substituídos pelos seus códigos numéricos. O uso da função 'escape' resulta
> em:
>
> escape(&)
> &amp;
>

o 38 é o código UNICODE (não utf-8) do caracter "&". Sabendo isto, vc
pode fazer algo como:

import string
strings_validas = string.letters + string.digits + ' '
st = "S & M Indústria e Comércio"

print "".join([s if s in strings_validas else "&#%s;" % ord(s) for s in st])

> Agora vou ver um modo prático de pegar o código numérico...
>
> Bruno Borges
>


> --- Em python...@yahoogrupos.com.br, José Ricardo Borba <jrborba.rs@...>
> escreveu
>>

>> Pessoal,
>>
>> Sou novo aqui na lista e estou ainda "engatinhando" em Python. Mas estou
>> vendo o pessoal se debatendo com um problema com XML que, a princípio,
>> nem é Python. Então posso ajudar !!! Tenho um pouquinho de conhecimento
>> de XML pois programo com PHP há algum tempo e já me deparei com alguns
>> problemas deste tipo, mas nada com o governo!!!
>>
>> http://xml.silmaril.ie/authors/specials/
>>
>> Neste artigo, o autor coloca que, sem definir o DTD, o XML assume
>> algumas formas padrão para ALGUNS caracteres especiais. Em HTML 4, segue
>> uma tabela com as notações em código mnemônico e em o código numérico,
>> no link abaixo.
>>
>> http://www.laughtergenealogy.com/bin/header/ascii3.html
>>
>> Dá uma olhada neste post aqui e vê se tem algo assim (o DTD) na NFe.
>> Assim já dá para eu entender como a NFe funciona (se é que funciona....).
>>
>> Abraço.
>>
>> Ricardo
>>
>> http://www.macoratti.net/vb_xml2.htm
>
>

--
Rodolfo Carvalho
Web Developer
rodol...@gmail.com

bruno.borges100

unread,
Aug 6, 2009, 10:51:18 AM8/6/09
to python...@yahoogrupos.com.br
Tivemos progresso, com o uso do código numérico!

Fui direto na string final (leitura do xml que foi gerado) peguei o código &amp; que estava nela e substitui pelo seu código que é &#38;

Essa string foi enviada e aceita.

=D
:]

Ou seja, no final é necessário que os caracteres especiais estejam substituídos pelos seus códigos numéricos. O uso da função 'escape' resulta em:

escape(&)
&amp;

Agora vou ver um modo prático de pegar o código numérico...

Bruno Borges


--- Em python...@yahoogrupos.com.br, José Ricardo Borba <jrborba.rs@...> escreveu
>

> Pessoal,
>
> Sou novo aqui na lista e estou ainda "engatinhando" em Python. Mas estou
> vendo o pessoal se debatendo com um problema com XML que, a princípio,
> nem é Python. Então posso ajudar !!! Tenho um pouquinho de conhecimento
> de XML pois programo com PHP há algum tempo e já me deparei com alguns
> problemas deste tipo, mas nada com o governo!!!
>
> http://xml.silmaril.ie/authors/specials/
>
> Neste artigo, o autor coloca que, sem definir o DTD, o XML assume
> algumas formas padrão para ALGUNS caracteres especiais. Em HTML 4, segue
> uma tabela com as notações em código mnemônico e em o código numérico,
> no link abaixo.
>
> http://www.laughtergenealogy.com/bin/header/ascii3.html
>
> Dá uma olhada neste post aqui e vê se tem algo assim (o DTD) na NFe.
> Assim já dá para eu entender como a NFe funciona (se é que funciona....).
>
> Abraço.
>
> Ricardo
>
> http://www.macoratti.net/vb_xml2.htm

Rodolfo S. Carvalho

unread,
Aug 6, 2009, 11:14:43 AM8/6/09
to python...@yahoogrupos.com.br
Corrigindo!

2009/8/6 Rodolfo S. Carvalho <rodol...@gmail.com>:


> bruno,
>
> 2009/8/6 bruno.borges100 <bruno....@gmail.com>:
>>
>>
>> Tivemos progresso, com o uso do código numérico!
>>
>> Fui direto na string final (leitura do xml que foi gerado) peguei o código
>> &amp; que estava nela e substitui pelo seu código que é &#38;
>>
>> Essa string foi enviada e aceita.
>>
>> =D
>> :]
>>
>> Ou seja, no final é necessário que os caracteres especiais estejam
>> substituídos pelos seus códigos numéricos. O uso da função 'escape' resulta
>> em:
>>
>> escape(&)
>> &amp;
>>
>
> o 38 é o código UNICODE (não utf-8) do caracter "&". Sabendo isto, vc
> pode fazer algo como:
>
> import string
> strings_validas = string.letters + string.digits + ' '
> st = "S & M Indústria e Comércio"

o "st" precisa ser do tipo 'unicode':

st = u"S & M Indústria e Comércio"

>
> print "".join([s if s in strings_validas else "&#%s;" % ord(s) for s in st])
>

S &#38; M Ind&#250;stria e Com&#233;rcio

João Bordignon

unread,
Aug 6, 2009, 9:20:43 AM8/6/09
to python...@yahoogrupos.com.br
2009/8/6 bruno.borges100 <bruno....@gmail.com>:

>
>
> Armando,
>
> O xml está correto, está sendo gerado normalmente, depois abro ele e ta tudo
> blz. O problema é que o servidor da Sefaz não está aceitando ele. Já deixou
> de ser um problema de xml, agora é apenas um problema de Nota Fiscal
> Eletrônica.
>

Sim, é um problema da NFE mesmo. Pelo que eu me lembre, na empresa
em que eu trabalhava antes. Os caras chegaram a tirar os acentos dos nomes
por que senão as notas eram recusadas.

Eu suspeito que o parser deles tenha sido programado em perl usando
expressões regulares pelo estagiário. Porque não tem sentido essas
explicações que eles mandam.

bruno.borges100

unread,
Aug 6, 2009, 11:50:01 AM8/6/09
to python...@yahoogrupos.com.br
Ok Rodolfo, vou fazer o que você falou.

Obrigado
Bruno Borges


<rodolfo.ueg@...> escreveu
>
> bruno,
>
> 2009/8/6 bruno.borges100 <bruno.python@...>:


> >
> >
> > Tivemos progresso, com o uso do código numérico!
> >
> > Fui direto na string final (leitura do xml que foi gerado) peguei o código
> > &amp; que estava nela e substitui pelo seu código que é &#38;
> >
> > Essa string foi enviada e aceita.
> >
> > =D
> > :]
> >
> > Ou seja, no final é necessário que os caracteres especiais estejam
> > substituídos pelos seus códigos numéricos. O uso da função 'escape' resulta
> > em:
> >
> > escape(&)
> > &amp;
> >
>
> o 38 é o código UNICODE (não utf-8) do caracter "&". Sabendo isto, vc
> pode fazer algo como:
>
> import string
> strings_validas = string.letters + string.digits + ' '
> st = "S & M Indústria e Comércio"
>
> print "".join([s if s in strings_validas else "&#%s;" % ord(s) for s in st])
>
> > Agora vou ver um modo prático de pegar o código numérico...
> >
> > Bruno Borges
> >
> > --- Em python...@yahoogrupos.com.br, José Ricardo Borba <jrborba.rs@>

> > escreveu
> >>
> >> Pessoal,
> >>
> >> Sou novo aqui na lista e estou ainda "engatinhando" em Python. Mas estou
> >> vendo o pessoal se debatendo com um problema com XML que, a princípio,
> >> nem é Python. Então posso ajudar !!! Tenho um pouquinho de conhecimento
> >> de XML pois programo com PHP há algum tempo e já me deparei com alguns
> >> problemas deste tipo, mas nada com o governo!!!
> >>
> >> http://xml.silmaril.ie/authors/specials/
> >>
> >> Neste artigo, o autor coloca que, sem definir o DTD, o XML assume
> >> algumas formas padrão para ALGUNS caracteres especiais. Em HTML 4, segue
> >> uma tabela com as notações em código mnemônico e em o código numérico,
> >> no link abaixo.
> >>
> >> http://www.laughtergenealogy.com/bin/header/ascii3.html
> >>
> >> Dá uma olhada neste post aqui e vê se tem algo assim (o DTD) na NFe.
> >> Assim já dá para eu entender como a NFe funciona (se é que funciona....).
> >>
> >> Abraço.
> >>
> >> Ricardo
> >>
> >> http://www.macoratti.net/vb_xml2.htm
> >
> >
>
>
>
> --
> Rodolfo Carvalho
> Web Developer

> rodolfo.ueg@...

Joao S. O. Bueno

unread,
Aug 6, 2009, 6:08:57 PM8/6/09
to python...@yahoogrupos.com.br
On Thursday 06 August 2009, Rodolfo S. Carvalho wrote:
> o 38 é o código UNICODE (não utf-8) do caracter "&". Sabendo isto, vc
> pode fazer algo como:

>>> ord (u"&")
38
>>> ord (u"&".encode("utf8"))
38
>>> ord (u"&".encode("cp1252"))
38
>>> ord (u"&".encode("ASCII"))
38

----------
(as vezes é bom saber do que está falando antes de escrever pra lista)

Rans a parte, sugiro a todos os que tiverem qualquer dúvida sorbe unicode,
utf-8, encodings (não xml - isso é outro assunto ) -
a lerem a página http://www.python.org.br/wiki/PythonUnicode


js
-><-

Reply all
Reply to author
Forward
Message has been deleted
0 new messages