PRSousa Posted October 28, 2009 at 07:44 PM Report Share #293764 Posted October 28, 2009 at 07:44 PM Quando faço HttpRequest de uma página, e pego no HTML da mesma (em .responseText) e coloco num <div> (.innerHtml, os caracteres portugueses vêm todos baralhados. Se colocar a mesma página numa <iframe>, por exemplo, fica tudo direitinho. Alguém me pode ajudar? TIA Link to comment Share on other sites More sharing options...
scorch Posted October 28, 2009 at 11:02 PM Report Share #293793 Posted October 28, 2009 at 11:02 PM Podes mostrar o código que obtens através da responseText? PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
jwv Posted October 29, 2009 at 12:44 AM Report Share #293802 Posted October 29, 2009 at 12:44 AM Isso acontece por causa do encoding do response ou do encoding que está definido no HTML. Tens de definir o header com o enconding correcto. Qual é a linguagem que utilizas do lado do servidor (PHP,ASP,RUBY,PHYTON)? Tens o encoding no HTML definido para iso-8859-1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> Na resposta tens de enviar o header com o encoding iso-8859-1. Exemplo em PHP: <?php header('Content-Type: text/html; charset=iso-8859-1'); echo 'Olá mundo do PHP'; ?> Link to comment Share on other sites More sharing options...
PRSousa Posted October 29, 2009 at 10:26 AM Author Report Share #293821 Posted October 29, 2009 at 10:26 AM Obrigado desde já pelas respostas, e passo então a enviar os pedaços de código: A minha página contém: ... <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <script language="JavaScript" type="text/javascript"> function GetHTML() { var url = "http://www.exemplo.pt/default.html"; if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open( "GET", url , false ); xhttp.setRequestHeader( "Content-Type", "text/html; charset=windows-1252" ); xhttp.send(null); document.getElementById("OtherPageHTML").innerHTML = xhttp.responseText; xhttp = null; } ... <iframe id="iframe" src="http://www.exemplo.pt/default.html"></iframe> <input type="submit" onclick="GetHTML()" value="Get Page" /> <div id="OtherPageHTML"></div> ... Na <iFrame> aparece tudo direitinho mas na <div> aparece tudo estropiado. Analizando a página pretendida (http://www.exemplo.pt/default.html) verifica-se que tem: ... <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> ... Podem ajudar-me p. f. Obrigado Link to comment Share on other sites More sharing options...
scorch Posted October 29, 2009 at 10:38 AM Report Share #293823 Posted October 29, 2009 at 10:38 AM Tenta antes assim: <meta http-equiv="Content-Type" content="text/html; charset=charset=iso-8859-1"> <script language="JavaScript" type="text/javascript"> function GetHTML() { var url = "http://www.exemplo.pt/default.html"; if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open( "GET", url , false ); xhttp.setRequestHeader( "Content-Type", "text/html; charset=iso-8859-1" ); xhttp.send(null); document.getElementById("OtherPageHTML").innerHTML = xhttp.responseText; xhttp = null; } ... <iframe id="iframe" src="http://www.exemplo.pt/default.html"></iframe> <input type="submit" onclick="GetHTML()" value="Get Page" /> <div id="OtherPageHTML"></div> PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
PRSousa Posted October 29, 2009 at 10:43 AM Author Report Share #293826 Posted October 29, 2009 at 10:43 AM Isso foi o que eu comecei por experimentar mas sem sucesso 😄 . Mais alguma ideia que eu possa tentar? Obrigado mais uma vez. Link to comment Share on other sites More sharing options...
jwv Posted October 29, 2009 at 12:20 PM Report Share #293837 Posted October 29, 2009 at 12:20 PM O conteúdo que estás a ir buscar é dinâmico(PHP,etc...) ou estático(HTML)? Link to comment Share on other sites More sharing options...
PRSousa Posted October 29, 2009 at 12:58 PM Author Report Share #293845 Posted October 29, 2009 at 12:58 PM Dinâmico. A página que vou buscar não é "minha". Trata-se de uma página externa onde preciso de ir colher alguns dados. Não uso a <iframe> porque na minha página não consigo aceder ao conteúdo da <iframe> (diferentes domínios). Link to comment Share on other sites More sharing options...
jwv Posted October 29, 2009 at 02:06 PM Report Share #293855 Posted October 29, 2009 at 02:06 PM Podes fornecer o URL onde estás a ir buscar o conteúdo? Provavelmente terás de fazer um script do lado do servidor para fazeres o encoding do conteúdo. Link to comment Share on other sites More sharing options...
PRSousa Posted October 29, 2009 at 02:22 PM Author Report Share #293859 Posted October 29, 2009 at 02:22 PM Como já disse, a página não é minha mas está num domínio a que tenho acesso. Não vale a pena fornecer o URL pois não consegues ver. Tenho de usar a página tal qual ela está, ou seja, não posso fazer nada ao nível do servidor. Vês alguma alternativa? Há alguma forma de usar a <iframe>, uma vez que neste container o HTML está direitinho? Obrigado. Link to comment Share on other sites More sharing options...
jwv Posted October 29, 2009 at 05:41 PM Report Share #293887 Posted October 29, 2009 at 05:41 PM Tens duas formas de resolver o problema do enconding. Primeira: - Identificar o encoding da página pedida (podes fazer isso utilizando o firebug na aba NET e depois abres o link da página na aba HEADERS). - Colocar o teu HTML com o mesmo encoding da página pedida. Segunda: - Buscar o conteúdo em PHP (por exemplo: file_get_contents) e converter o conteúdo para o encoding correcto. Link to comment Share on other sites More sharing options...
PRSousa Posted October 29, 2009 at 06:10 PM Author Report Share #293894 Posted October 29, 2009 at 06:10 PM Pois isso já eu tentei, por isso estou perdido. Primeira: O enconding da págima pretendida é: <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> que é exactamente o que eu coloquei na minha página: <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> e que coloquei também no XHR: xhttp.setRequestHeader( "Content-Type", "text/html; charset=windows-1252" ); Não funciona :-( Segunda: PHP não uso. Há alguma alternativa em JavaScript que permite fazer esta extracção convertendo para o encoding correcto? Obrigado Link to comment Share on other sites More sharing options...
jwv Posted October 29, 2009 at 08:16 PM Report Share #293914 Posted October 29, 2009 at 08:16 PM Estranho... deveria funcionar. Não tenho conhecimento que seja possível modificar o encoding do conteúdo em javascript. Link to comment Share on other sites More sharing options...
PRSousa Posted October 29, 2009 at 11:45 PM Author Report Share #293965 Posted October 29, 2009 at 11:45 PM E com <iframe>? É possível contornar as questões de segurança pelo facto de serem 2 domínios diferentes? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now