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”
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 :-)
mas é mais ou menos o seguinte:
importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Connection;importjava.sql.Statement;importjava.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. */publicclassFBExample{publicstaticvoidmain(String[]args){newFBExample().execute();}protectedConnectiongetConnection(Stringuser,Stringpassword,Stringdatabase){try{Class.forName("org.firebirdsql.jdbc.FBDriver");}catch(Exceptione){e.printStackTrace();returnnull;}Propertiesp=newProperties();p.put("user",user);p.put("password",password);p.put("lc_ctype","ISO8859_1");try{returnDriverManager.getConnection("jdbc:firebirdsql:"+database,p);}catch(Exceptione){e.printStackTrace();returnnull;}}protectedResultSetexecSQL(Connectioncon,Stringsql){try{Statements=con.createStatement();s.execute("insertintoteste_acentovalues('ácento')");returns.executeQuery(sql);}catch(Exceptione){e.printStackTrace();returnnull;}}protectedvoidexecute(){Connectionc=getConnection("sysdba","masterkey","172.18.4.3/3050:/home/gdb/teste_fb1.gdb");ResultSetr=execSQL(c,"select*fromteste_acento");try{while(r.next()){System.out.println(r.getString(1));}}catch(Exceptione){e.printStackTrace();}}}
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 :-)
E
Eduardo_Leite
Como configuro o parametro ‘lc_ctype’ se eu estiver fazendo a conexão do Banco pelo TomCat??