Ref.: Conversão de Tipos

Como faço para converter isso

"AUTORIZA╟├O DE PESQUISA"

Para isso:

"AUTORIZAÇÃO DE PESQUISA"

Atente para o “Ç” e o “Ô

Obrigado desde já


        String s = "AUTORIZA╟├O DE PESQUISA";
        
        s = s.replace("╟", "Ç").replace("├", "Ã");
        System.out.println(s);

Pô! ai não vale né!?

Deve ter alguma coisa a ver com caracter Unicode

Isso foi um erro de conversão de ASCII Estendido para Unicode.

╟ é 199 em ASCII Estendido, e Ç em ISO 8859-1 e UTF8

├ é 195 em ASCII Estendido, e à em ISO 8859-1 e UTF8.

Tente este:


import java.io.UnsupportedEncodingException;

public class tradutor {
   public static void main(String[] args)
   {
      try
      {
         String s = "AUTORIZA╟├O DE PESQUISA";
         byte[] bytes = s.getBytes("CP437");
         String resultado = new String(bytes);
         System.out.println(resultado);
      }
      catch (UnsupportedEncodingException ex)
      {
      }
   }
}

Porra Bruno!

Caraca!

Tu não tens idéia de como me ajudou, são 22:30, acordo as 4:45 para trabalhar, estou até agora tentando encontrar uma solução.

Fique focado em adquirir um JDBC FREE para isso.

Amanhã cedo tenho que mostrar 27 arquivos convertidos, em média 30 mil registros cada.

Muito Obrigado mesmo.

Bom dia!

Mas um problema sobre conversão

No Arquivo a ser convertido aparece assim:
AUTORIZA╟├O DE PESQUISA

Quando resgato, aparece assim:
AUTORIZA¦+O DE PESQUISA

O que devo usar para o mesmo aparecer assim:
AUTORIZAÇÃO DE PESQUISA

Qual Charset?

Desde já obrigado.

Como assim “quando resgato”? Não está convertendo corretamente ou é outro arquivo com charset diferente??

Poxa cara!

Estou sendo cobrado pra caramba sobre isso.

Acho que o bicho vai pegar.

Esse é meu código

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try {   
        //DBF ===================================
        //Registrar o Driver JDBC do banco de dados, neste caso estou usando o DBF   
        String conexao = "com.hxtt.sql.dbf.DBFDriver";   
        //Carrega o Driver a ser utilizado   
        Class.forName(conexao).newInstance();   
        //Indica o caminho do arquivo   
        String caminho = "C:\Sistemas\Java\DeskTop\TMSystem\orthers\BackupBancoDados\DBF´s";   
        // String de conexao para o DBF   
        String url = "jdbc:DBF:/" + caminho;   
        //Faz um SELECT no arquivo   
        String sql = "SELECT * FROM PA";   
        //OBS.: Não coloque a extensão do arquivo, deixe sem .DBF   
        //Abre uma conexão com o arquivo   
        Connection conn = DriverManager.getConnection(url);   
        // recuperar a classe Stamtemant a partir da conexao criada   
        Statement stmt = conn.createStatement();   
        //Retorna o resultado da Query   
        ResultSet rs = stmt.executeQuery(sql);   
        //Pegar o valor da(s) coluna(a) já no tipo desejado String, int, Date, etc...

        //
        String ultimoEvento = new String("");
        Processos processo = new Processos();
        String ID = new String("");
        while (rs.next()) {
//            ID = rs.getString("ID");
//            if (ID.equals("{8E3A2A67-A5EB-4B6C-B092-60C52842966E}")) {
                processo.setNumeroProcesso(rs.getInt("Numero"));
                processo.setAnoProcesso(rs.getShort("Ano"));
//                processo.setID_RegistroProcesso(rs.getString("ID"));
                processo.setID_RegistroProcesso(ID);
                processo.setArea_HA(rs.getFloat("Area_HA"));
                processo.setDescricaoFase(rs.getString("Fase"));
                processo.setRequerente(rs.getString("Nome"));
                ultimoEvento = rs.getString("Ult_Evento");
                processo.setCodigoEvento(new Short(ultimoEvento.substring(0, ultimoEvento.indexOf(" - "))));
                processo.setDescricaoEvento(ultimoEvento.substring(ultimoEvento.indexOf(" - ") + 3, ultimoEvento.length() - 14));
                processo.setDataEvento(new GregorianCalendar(Integer.parseInt(ultimoEvento.substring(ultimoEvento.length() - 10, ultimoEvento.length()).substring(6, 10)),
                                                             Integer.parseInt(ultimoEvento.substring(ultimoEvento.length() - 10, ultimoEvento.length()).substring(3, 5)) - 1,
                                                             Integer.parseInt(ultimoEvento.substring(ultimoEvento.length() - 10, ultimoEvento.length()).substring(0, 2))));
                processo.setSubstancia(rs.getString("Subs"));
                processo.setAplicacao(rs.getString("Uso"));
                processo.setUF(rs.getString("UF"));
    //            processo.setDataInclusaoRegistro(new GregorianCalendar().setTime(new Date()));
    //            processo.setDataAlteracaoRegistro(new GregorianCalendar());
                processo.setDataInclusaoRegistro(new GregorianCalendar(2008, 9, 6));
                processo.setDataAlteracaoRegistro(new GregorianCalendar(2008, 9, 6));
                processo.setMatriculaUsuario(new Short("1"));
                
                
                System.out.println(processo.getDescricaoFase() + " - " + processo.getRequerente() + " - " + processo.getDescricaoEvento() + " - ");

                ManutencaoTabela.IncluiRegistro(processo, Conexao);
//            }
        }   
        
        rs.close();   
        stmt.close();   
        conn.close();   
    } catch (Exception e) {   
        System.out.println("Oops-> " + e);   
    }   
}                                        

Essa aqui é a linha do arquivo

853853	1993	853853/1993	{F9BA7CE6-ABDB-4AB1-8C97-90917F864B5C}	50,00000000000	AUTORIZA╟├O DE PESQUISA	JO├O IVAN BEZERRA DE ALMEIDA	255 - AUT PESQ/CUMPRIMENTO EXIG╩NCIA PROTOCOLI EM 31/01/2006	OURO	N├O INFORMADO	PA

Quando executo o processo.setDescricaoFase(rs.getString("Fase"));

Aparece isso
AUTORIZA¦+O DE PESQUISA

E preciso converter para isso
AUTORIZAÇÃO DE PESQUISA

Muito estranho né!?

O que eu consigo pensar no momento é usar bytes = rs.getBytes no lugar de rs.getString, depois usar um new String(bytes, “CP437”) p/ tentar converter p/ String no charset certo.

Pois é!

Tb. acredito nisso

Só que não funciona porque quando leio isso
AUTORIZA╟├O DE PESQUISA
automaticamento ele converte para isso
AUTORIZA¦+O DE PESQUISA
então quando aplicamos isso
s.getBytes(“CP437”)

Converte errado.

Temos que converter isso
AUTORIZA¦+O DE PESQUISA
para isso
AUTORIZAÇÃO DE PESQUISA

Já queimei os meus neurônios aqui. ├ para + não tem sentido.

Não tem nenhuma opção para passar na conexão ou no JDBC para ele mudar o encoding que ele usa na leitura?

Valeu Amigo!

Deixe quieto!

Verei outra solução.

Só comprando mesmo o JDBC de “com.hxtt.sql.dbf.DBFDriver”.

http://www.hxtt.com/dbf/installation.html#load

Tem a opção de passar o charset como parâmetro.