Problemas com CompressionFilter - Charset ISO-8859-15

Pessoal, o sistema atualmente utiliza CompressionFilter no arquivo web.xml pra compactar o response.

<filter>
    <filter-name>CompressionFilter</filter-name>
      <filter-class>br.com.sistema.controller.filters.CompressionFilter</filter-class>       
      <init-param>
          <param-name>debug</param-name>
          <param-value>false</param-value>            
      </init-param>        
</filter>    
<filter-mapping>
        <filter-name>CompressionFilter</filter-name>
        <servlet-name>action</servlet-name>
</filter-mapping>     

A classe criada para isso seta o OutputStreamWriter com o Charset para “ISO-8859-15” por que é utilizado o símbolo da moeda Euro no sistema.

Porém, estamos enfrentando um problema com acentos informados sozinhos.

Ex.:
O usuário informa uma descrição: DAVID´S BAR

O símbolo utilizado para a contração foi o acento agudo. Não que esteja de todo errado (o certo seria o apóstrofo) apesar de o sistema gravar corretamente esse acento na base, ao consultar esse registro a informação exibida ne tela é a seguinte:

DAVID?S BAR

O problema ocorre somente com o acento agudo. Todos os outros acentos são exibidos corretamente. Parece ser um bug dessa versão do Charset.

O servidor é Tomcat 5.5 com Struts 1

Alguém já passou por isso ou sabe de algo pra me indicar por onde pesquisar?

Desde já agradeço

Amigo, o acento sozinho (\u00B4, U+00B4, ACUTE ACCENT) não está disponível em ISO-8859-15. Veja a lista em:

http://czyborra.com/charsets/iso8859-1.txt.gz

http://czyborra.com/charsets/iso8859-15.txt.gz

Você vai ter de fazer algum truque :stuck_out_tongue:

Caramba Thingol, não me diga uma coisa dessas. Será que não é bug não? Não esqueceram de alguns símbolos?

Gambiarra é a última coisa que a gente está pensando em fazer.

Vou ter que dar uma pesquisada mais profunda…

Talvez um desses nos atenda:

Obrigado por enquanto…

Porque não simplesmente utilizar Unicode?

Ou melhor, UTF-8? Talvez seja melhor, mas é bom dar uma testada com seu browser preferido.

Ou, mais exatamente, UTF-8 (que eh o encoding que toda aplicacao web que se respeita devia usar).

Inicialmente, o comando abaixo era o default do sistema, antes de adotar, também, o uso do símbolo do Euro:

OutputStreamWriter tempOut = new OutputStreamWriter(zipOut);

Ao adotar o símbolo do Euro, passou a ser assim:

OutputStreamWriter tempOut = new OutputStreamWriter(zipOut, "ISO-8859-16");

Com isso, o acento agudo acabou sendo substituído por ?.

Depois de tantas idas e vindas, pesquisas e leituras em sites, substituí o ISO-8859-16 por ISO-8859-1, e funcionou.

Só pra esclarecer, eu esqueci de mencionar anteriormente que o símbolo do Euro ? está gravado assim, como ? ( alt + 0128 ) na base (Oracle 9i) e ele é exibido corretamente na página.