Não acho que seja exatamente na hora de persistir.
Já tive este tipo de problema em plataformas UTF-8 (Linux) sendo acessados por browsers Windows. Analisando o trace dos pacotes, pude perceber que o POST mandava os dados em ISO-8859-1, mas sem nenhum header indicando a codificação. Neste caso, o Tomcat assume a codificação da plataforma, normalmente UTF-8 no caso Linux. O resultado é que os parâmetros do POST são decodificados de forma incorreta no caso de caracteres acentuados - os demais funcionam pois os primeiros 128 caracteres do UFT-8 batem com ISO-8859-1.
Para comprovar, crie um breakpoint no ponto em que vc. pega os dados do request e analise o resultado no debugger. Se o string estiver com acentuação correta, então o que falei acima não se aplica, e o problema provavelmente está, como indicou o post anterior, no driver. Caso contrário, o problema está na forma de tratar os dados.
Não há uma solução 100% garantida, pois todas dependem de boa vontade do browser, mas eis algumas coisas que ajudam:
- Mande headers com o “content-encoding” corretamente configurados
- Mande suas páginas com a PI <? cml version="1.0" encoding="xxx" ?>
- Mande o tag
- No caso de form com POST, especifique o atributo enctype=“multipart/form-data”.
- Inclua um campo hidden no form contendo um caracter acentuado (ex ‘á’. No tratamento do request, vc. testa o string recebido e, se não bater com o o valor esperado, dá para assumir meleca no envio…