Erro com assentuação

Pessoal, tenho uma página em JSP feita em JBuilder e acessando o Firebird via ODBC, quando insiro dados no formulário usando acentos dá a seguinte mensagem:

“StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception
javax.servlet.ServletException: GDS Exception. arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets”

já sem acento a pagina funciona perfeitamente.

Algum pode dar uma dica?

seguinte, você tem que criar a conexão JDBC especificando qual o charset utilizado no banco de dados, eu mandei uma vez um exemplo sobre isto aqui pro guj mesmo :slight_smile:

mas é mais ou menos o seguinte:

[code]import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.Statement;
import java.util.Properties;
/**

  • @author Rodrigo

  • To change this generated comment edit the template variable "typecomment":

  • Window>Preferences>Java>Templates.

  • To enable and disable the creation of type comments go to

  • Window>Preferences>Java>Code Generation.
    */
    public class FBExample {

    public static void main(String[] args) {
    new FBExample().execute();
    }
    protected Connection getConnection(
    String user,
    String password,
    String database) {
    try{
    Class.forName("org.firebirdsql.jdbc.FBDriver");
    }catch(Exception e){
    e.printStackTrace();
    return null;
    }
    Properties p = new Properties();
    p.put("user",user);
    p.put("password",password);
    p.put("lc_ctype","ISO8859_1");
    try{
    return DriverManager.getConnection("jdbc:firebirdsql:" + database,p);
    }catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }

    protected ResultSet execSQL(Connection con, String sql) {
    try{
    Statement s = con.createStatement();
    s.execute(“insert into teste_acento values(‘ácento’)”);
    return s.executeQuery(sql);
    }catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }

    protected void execute() {
    Connection c = getConnection("sysdba","masterkey","172.18.4.3/3050:/home/gdb/teste_fb1.gdb");
    ResultSet r = execSQL(c,"select * from teste_acento");
    try{
    while(r.next()){
    System.out.println(r.getString(1));
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    }

}
[/code]

o parametro lc_ctype indica o charset utilizado, é só utilizar o mesmo do banco de dados que resolve o problema, este problema ocorre por que o default do java é UTF-8 e o default do FB depende do SO do servidor :slight_smile:

Como configuro o parametro ‘lc_ctype’ se eu estiver fazendo a conexão do Banco pelo TomCat??

Valeu!!