Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

d3rson

Problemas em Gerar XML pelo ASP - (UTF-8)

Recommended Posts

E ai pessoal, blza?

 

Seguinte, estou com um pequeno impasse quanto a um arquivo em ASP que me gera alguns XML apartir de um bando de dados .mdb!

 

O problema está em como o ASP salva o arquivo XML, ele está gerando com a formatação ANSI e preciso q o arquivo já seje salvo em UTF-8, pois como meu banco de dados possui caracteres especias como ç, é, etc. Utilizo esse XLM para comunicar com o flash, e o mesmo não reconheçe esses caracteres se o arquivo XML estiver com formatação ANSI.

 

 

segue o código:

 

<%
Response.ContentType = "text/html" 
Response.AddHeader "Content-Type", "text/html;charset=UTF-8" 
Response.CodePage = 65001 
Response.CharSet = "UTF-8" 


strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= X:\XXX\XXX\XXX\XXX\XXX\database\banco.mdb"

set objConn = Server.CreateObject("ADODB.Connection")
objConn.open strConnection
set RSxff= Server.Createobject("ADODB.RecordSet")
RSxff.Open "SELECT distinct linha FROM produtos order by linha", objConn


do while not RSxff.EOF
	Set fs = CreateObject("Scripting.FileSystemObject") 'cria
	Set d = fs.CreateTextFile(server.MapPath("xml/linhas/" & RSxff("linha") & ".xml"),true)
		
	d.write "<?xml version="& chr(34)  & "1.0"& chr(34)  &" encoding="& chr(34)  &"UTF-8"& chr(34)  &"?>" & vbcrlf
	d.write "<images>"& vbcrlf
	
		set RSx= Server.Createobject("ADODB.RecordSet")
		RSx.Open "SELECT * FROM produtos where linha='"& RSxff("linha") &"' order by linha", objConn
		
		do while not RSx.EOF
		d.write "	<pic>"& vbcrlf
			d.write "		<nomelinha>"& ucase(RSx("linha"))&"</nomelinha>"& vbcrlf
			d.write "		<areferencia>"& ucase(RSx("referencia"))&"</areferencia>"& vbcrlf
			d.write "		<couro>"& ucase(RSx("couro"))&"</couro>"& vbcrlf
			d.write "		<cor>"& ucase(RSx("cor"))&"</cor>"& vbcrlf
			d.write "		<solado>"& ucase(RSx("sola"))&"</solado>"& vbcrlf
			d.write "		<image>galeria/grande/"& ucase(RSx("img"))& "</image>"& vbcrlf
			d.write "		<thumbnail>galeria/pequeno/"& ucase(RSx("img"))& "</thumbnail>"& vbcrlf
		d.write "	</pic>"& vbcrlf
		
		RSx.MoveNext
		if RSx.EOF then Exit do
		Loop 
	d.write "</images>"
	d.close()
RSxff.MoveNext
if RSxff.EOF then Exit do
  Loop 

response.write "XML GERADO COM SUCESSO!"
%>

Obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudar o head da página que solicita os dados para que ele fique assim

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Na página que responde os dados colocar isso antes do retorno co conteúdo (logo no topo):

<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudar o head da página que solicita os dados para que ele fique assim

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Na página que responde os dados colocar isso antes do retorno co conteúdo (logo no topo):

<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>

Opa.. vlw pela ajuda..

 

esse código q postei inicialmente já é a página que solicita os dados. eu apenas digito dominio.com.br/gera_produtos.asp e dentro de gera_produtos.asp está todo esse código que eu postei... nesse caso como fica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa deixar a codificacaun igual nos arquivos

e no flash você pode colocar

 

onload () {

System.useCodepage=true;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisa deixar a codificacaun igual nos arquivos

 

Eita... ou eu não to entendendo, ou estou me expressando mal o que eu quero....

 

vamos lá..

 

Tenho um arquivo que se chama gera_produtos.asp dentro dele tem apensas a codificação que postei inicialmente e mais nada só o código mesmo.

 

Quando acesso: wwww.dominio.com.br/gera_produtos.asp ele executa essa página e cria todos os meus XML'S que vou utilizar no meu arquivo flash.

 

Os arquivos XML estão com a formatação ANSI e quero colocar para UTF-8 já na execução da criação dos XML'S.

 

Só isso.. eu naum tenho outra página para colocar aquela meta tag que você falou... e o código

 

<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>
eu já tenho ele na página.. só naum tem a linha: Response.AddHeader "Pragma", "no-cache"

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar uma funcaun para decodificar e codificar

 

function DecodeUTF8(s) 
dim i  
dim c 
dim n
i = 1 
do while i <= len(s) 
   c = asc(mid(s,i,1))  
if c and &H80 then    
  n = 1  
do while i + n < len(s)
if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then          
exit do       
end if
n = n + 1   
   loop
if n = 2 and ((c and &HE0) = &HC0) then
c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
else    
    c = 191 
end if     
s = left(s,i-1) + chr© + mid(s,i+n)
end if 
   i = i + 1
loop  
DecodeUTF8 = s 
end function 
function EncodeUTF8(s)
dim i 
dim c  
i = 1
do while i <= len(s)
c = asc(mid(s,i,1)) 
   if c >= &H80 then
s = left(s,i-1) + chr(&HC2 + ((c and &H40) / &H40)) + chr(c and &HBF) + mid(s,i+1) 
     i = i + 1
end if 
   i = i + 1
loop  
EncodeUTF8 = s 
end function

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar uma funcaun para decodificar e codificar

 

function DecodeUTF8(s) 
dim i  
dim c 
dim n
i = 1 
do while i <= len(s) 
   c = asc(mid(s,i,1))  
if c and &H80 then    
  n = 1  
do while i + n < len(s)
if (asc(mid(s,i+n,1)) and &HC0) <> &H80 then          
exit do       
end if
n = n + 1   
   loop
if n = 2 and ((c and &HE0) = &HC0) then
c = asc(mid(s,i+1,1)) + &H40 * (c and &H01)
else    
    c = 191 
end if     
s = left(s,i-1) + chr© + mid(s,i+n)
end if 
   i = i + 1
loop  
DecodeUTF8 = s 
end function 
function EncodeUTF8(s)
dim i 
dim c  
i = 1
do while i <= len(s)
c = asc(mid(s,i,1)) 
   if c >= &H80 then
s = left(s,i-1) + chr(&HC2 + ((c and &H40) / &H40)) + chr(c and &HBF) + mid(s,i+1) 
     i = i + 1
end if 
   i = i + 1
loop  
EncodeUTF8 = s 
end function

olha.. ASP não é o meu forte.. como uso essa função que você me passou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

passe os dados na funcaun , como sendo o "S"

Compartilhar este post


Link para o post
Compartilhar em outros sites

passe os dados, direto na function

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.