Estou com um problema mto estranho. Quando algum usuário envia um caracter especial ao banco de dados (como travessão ou aspas especiais), eles são gravados corretamente no banco (eu os vejo com um client), mas quando vou exibir na tela - usando um Servlet e buscando através de um ResultSet.getString(“campo”) - o sistema não reconhece e troca o caracter por ? (interrogação)
Uso agora um Win2003 Server, Tomcat 5, MySQL 5 e Java 5. Antes tinha Tomcat 4, MySQL 4 e Java 5, Linux, e funcionava…
pessoal, consegui a solução, com um código aqui do fórum! valeu pela ajuda!!!
/** Para a normalização dos caracteres de 32 a 255, primeiro caracter */privatestaticfinalchar[]FIRST_CHAR=(" !'#$%&'()*+\\-./[telefone removido]:;<->?@ABCDEFGHIJKLMNOPQRSTUVWXYZ"+"[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ E ,f'.++^%S<O Z ''''.-"+"-~Ts>o ZY !C#$Y|$'(a<--(_o+23'u .,1o>113?AAAAAAACEEEEIIIIDNOO"+"OOOXOUUUUyTsaaaaaaaceeeeiiiidnooooo/ouuuuyty").toCharArray();/** Para a normalização dos caracteres de 32 a 255, segundo caracter */privatestaticfinalchar[]SECOND_CHAR=(" ' , "+"\\ $ r'. + o E '' "+" M e # = 'C.< R .-.. ..>424 E E "+" E E hs e e h e e h ").toCharArray();/** * Efetua as seguintes normalizações para obtenção de certificados: * - Elimina acentos e cedilhas dos nomes; * - Converte aspas duplas em simples; * - Converte algumas letras estrangeiras para seus equivalentes ASCII * (como ß, convertido para ss) * - Põe um "\" antes de vírgulas, permitindo nomes como * "Verisign, Corp." e de "\", permitindo nomes como " a \ b "; * - Converte os sinais de = para - * - Alguns caracteres são removidos: * -> os superiores a 255, * mesmo que possam ser representados por letras latinas normais * (como s, = U+015E = Latin Capital Letter S With Cedilla); * -> os caracteres de controle (exceto tab, que é trocado por um espaço) * @param str A string a normalizar. * @return A string normalizada. */publicstaticStringnormalize(Stringstr){char[]chars=str.toCharArray();StringBufferret=newStringBuffer(chars.length*2);for(inti=0;i<chars.length;++i){charaChar=chars[i];if(aChar==' '||aChar=='\t'){ret.append(' ');// convertido para espaço}elseif(aChar>' '&&aChar<256){if(FIRST_CHAR[aChar-' ']!=' '){ret.append(FIRST_CHAR[aChar-' ']);// 1 caracter}if(SECOND_CHAR[aChar-' ']!=' '){ret.append(SECOND_CHAR[aChar-' ']);// 2 caracteres}}}returnret.toString();}