Caracteres estranhos apresentados em combo dinâmico

9 respostas
C

Olá, bom dia. Tenho um código de combo dinâmico que traz os dados belezinha. Porém, no segundo combo ele traz alguns caracteres estranhos, tipo asim:
____________
| ipa | --> primeiro combo
----------------

_______________
| |||| |||| centro |
| |||| horto | --> segundo combo
| |||| ideal |
| |||| |||| |||| |
---------------------

e se altero o código jsp, os valores do segundo combo não mudam. Prá mudar eu tenho que apagar o histórico do browser. Outra coisa: se eu mudo o comando de out.println prá out.print no result.jsp, os caracteres estranhos desaparecem das linhas intermediárias mas continuam aparecendo na primeira e última linhas. Alguma dica?

Este é o código (teste.jsp, result.jsp e ConnectionFactory.java):

Teste.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<HTML>
<HEAD>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
      pageEncoding="ISO-8859-1"%>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="IBM Software Development Platform">
<META http-equiv="Content-Style-Type" content="text/css">
<LINK href="../theme/Master.css" rel="stylesheet" type="text/css">
<TITLE>teste.jsp</TITLE>
</HEAD>
<BODY>

<script language="javascript">

function list_dados( valor ){  
      http.open("GET", "result.jsp?id=" + valor, true);  
      http.onreadystatechange = handleHttpResponse;  
      http.send(null);
}

function handleHttpResponse(){  
      campo_select = document.forms[0].subcategoria;  
      if (http.readyState == 4) {    
            campo_select.options.length = 0;    
            results = http.responseText.split(",");    
            for( i = 0; i < results.length; i++ ){       
                  string = results[i].split( "|" );      
                  campo_select.options[i] = new Option( string[0], string[1] );    
            }  
      }
}

function getHTTPObject() {
      var req; 
      try { 
                  if (window.XMLHttpRequest) {  
                        req = new XMLHttpRequest();   
                        if (req.readyState == null) {   
                             req.readyState = 1;   
                             req.addEventListener("load", function () {  
                                                                        req.readyState = 4;    
                                                                        if (typeof req.onReadyStateChange == "function")    
                                                                              req.onReadyStateChange();   
                                                                        }, true);  
                        }   
                        return req; 
                  }  
            if (window.ActiveXObject) {  
                  var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];   
                  for (var i = 0; i < prefixes.length; i++) {   
                        try {    
                             req = new ActiveXObject(prefixes[i] + ".XmlHttp");    
                             return req;   
                        } catch (ex) {};   
                  } 
            }
      } catch (ex) {} 
      alert("XmlHttp Objects not supported by client browser");
}

var http = getHTTPObject();
</SCRIPT>

<%@ page language="java" import="java.sql.Connection" %> 
<%@ page language="java" import="java.sql.PreparedStatement" %> 
<%@ page language="java" import="java.sql.ResultSet" %> 
<%@ page language="java" import="util.*" %>
<%

Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
con = ConnectionFactory.getConnection();
pstm = con.prepareStatement("SELECT * FROM cidade ORDER BY nome ASC");
rs = pstm.executeQuery();

%>
<form name="formulario" method="post" action="">
      <select name="categoria" onchange="list_dados( this.value )" >
      <option></option>
      <%while(rs.next()){
            out.print("<option value='"+rs.getInt("id")+"'>"+rs.getString("nome")+"</option>");

      } 
      rs.close();
      pstm.close();
      con.close();%>
      </select></p>
      <p><select name="subcategoria">
      </select>
      </p>
</form>

</BODY>
</HTML>

result.jsp

<%@ page language="java" import="java.sql.Connection" %> 
<%@ page language="java" import="java.sql.PreparedStatement" %> 
<%@ page language="java" import="java.sql.ResultSet" %> 
<%@ page language="java" import="util.*" %> 


<% 
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
con = ConnectionFactory.getConnection();
pstm = con.prepareStatement("SELECT * FROM bairro " +                    
" WHERE idCidade = " +request.getParameter("id")+ " ORDER BY nome ASC");
rs = pstm.executeQuery();
while(rs.next()){
            //String out = (String)(;
            out.println(rs.getString("nome")+"|"+rs.getInt("id")+",");

      }

rs.close();
pstm.close();
con.close();
%>

ConnectionFactory.java

package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
         public static Connection getConnection() throws SQLException {
                   try {
                   Class.forName("com.mysql.jdbc.Driver");
                   System.out.println("Conectando ao banco");
                   return DriverManager.getConnection("jdbc:mysql://localhost/dynamic",
                   "root", "admin");
                   } catch (ClassNotFoundException e) {
                   throw new SQLException(e.getMessage());
                   }
                   }

}

9 Respostas

C

Problema do cache resolvido. Problema dos caracteres estranhos (||||) continua…

UMC

Pode ser o tipo de formato de texto

pageEncoding="ISO-8859-1"%>

colca isso

pageEncoding="UTF-8"%>

vlw
abs

C

mesma coisa…

C

Mudando o charset para UTF-8, o combo passa a apresentar quadrados no lugar das barras (||||)

UMC

Vc alterou dos dois:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
para :

<%@ page language="java" contentType="text/html; charset=UTF -8" pageEncoding="UTF -8"%>

vlw
abs

C

Sim, fica com os quadrados tb…

UMC

Vc já viu se não é incompatibilidade com o Browse!!

C

Funcionou com firefox - muito obrigado…

UMC

Por de nada!!!
Espero ajudar sempre e ser ajudado tbm.
vlw
abs

Criado 6 de novembro de 2009
Ultima resposta 6 de nov. de 2009
Respostas 9
Participantes 2