Dois drivers no pacote da MySQL AB e charsets infernais

11 respostas
renatosilva

Caras que coisa irritante esses charsets. Nós aqui fazemos uma consulta no MySQL (Latin 1) e no HTML gerado aparece ? no lugar de acentuados, cedilhas etc. Bem, dei uma pesquisada aqui e lembro de uma parada de substituir drivers. Bem o problema está “resolvido”, mas eis que vos pergunto:

Alguém sabe por que que o pacote MySQL Connector da MySQL AB vem com dois drivers, org.gjt.mm.mysql.Driver e com.mysql.jdbc.Driver?

E por que que trocando o segundo pelo primeiro meu problema acabou? :?

PS: no prompt do Windows rodo uma classe (que usa o segundo driver se não me engano) que um colega fez e na saída do comando eu consigo ver os caracteres direito usando -Dfile.encoding=cp850, e no Linux nem é necessário essa opção. Alguém compreende o por quê dessas coisas?

11 Respostas

Rafael_Steil

org.gjt.mm.mysql.Driver eh o driver antigo, e somente existe por compatibilidades. Porem, ele aponta para o oficial, portando vc nao deveria estar tendo diferencas entre um ou outro.

Encoding eh complicado, e voce tera diferentes situacoes dependendo da maquina onde o sistema rodar. Ha um stick aqui no guj sobre o assunto.

Rafael

renatosilva

:shock: :?

Rafael Steil:
…diferentes situacoes dependendo da maquina onde o sistema rodar…

:shock: :shock: Não me diga essas coisas que me dá calafrios…

Bem um dia a luz virá sobre mim e me explicará esse fato paranormal então…

Acho que vou fazer faculdade de Charsetologia

Valeu Rafael…

Mais algum iluminado? hehehe

caiofilipini

Você pode começar por aqui:
http://www.joelonsoftware.com/articles/Unicode.html

:lol:

[]'s

renatosilva

Eu já imprimi isso hoje hehehehe

renatosilva

Caras descobri que com um pacote mais antigo mysql-3.0.8.jar é que os caracteres aparecem corretamente, eu estava usando o mysql-connector-java-3.1.6-bin.jar. Bom como eu acho melhor usar o driver mais novo, vou pesquisar quando puder como configurat o charset no driver, acho que tem como.

louds

Por que no windows funciona diferente do linux? O charset padrão, também conhecido por nativo, é diferente.

No windows é o cp850, no linux isso pode ser configurado. Por padrão eu sempre configuro para usar iso-8859-1 ou utf-8.

Rafael_Steil

O 3.1.6 me pareceu estupidamente ruim. No JForum eu estou com o 3.1.4-beta e funciona perfeitamente com todas as versoes do mysql, inclusive as mais novas. Porem, basta mudar para o 3.1.6 que exceptions bizarrissimas comecam a acontecer pelo sistema.

Rafael

renatosilva

louds:
Por que no windows funciona diferente do linux? O charset padrão, também conhecido por nativo, é diferente.

No windows é o cp850, no linux isso pode ser configurado. Por padrão eu sempre configuro para usar iso-8859-1 ou utf-8.

Bem queimando meus neurônios cheguei à seguinte teoria:

O driver antigo joga o Latin-1 do banco como saída, mas o Windows tenta ler usando outro encoding e aparece aqueles ??, o que pra mim parece ser um encoding de Unicode. As questões são:

  • Por que, mesmo no driver antigo, só com -Dfile.encoding=cp850 a coisa funciona? O que seria esse cp850? Isso é um encoding de Unicode? As opções -Dfile.encoding=UTF-8, -Dfile.encoding=iso-8859-1 (=latin1) e -Dfile.encoding=latin1 não funcionam.

  • Por que no Linux funciona sem opção nenhuma? Provavelmente meu colega não alterou o encoding padrão que é UTF-8 né? Será que é uma opção “file.encoding” padrão?

  • No caso da web, o Tomcat é que gera a saída do JSP, e funciona normal com o driver antigo, mas no Windows tem que usar esse cp850 com falei acima. Uai?

Rafael Steil:

O 3.1.6 me pareceu estupidamente ruim. No JForum eu estou com o 3.1.4-beta e funciona perfeitamente com todas as versoes do mysql, inclusive as mais novas. Porem, basta mudar para o 3.1.6 que exceptions bizarrissimas comecam a acontecer pelo sistema.

Rafael, poderia me dar um link para esse driver que você usa, que é mais novo do que o meu que não dá problema? É que quero distribuir o driver mais novo possível.

PS: vou ver se instalo ainda hoje o JForum aqui na intranet da empresa. Bem queria perguntar uma coisa a respeito, já que você é o mantenedor: não existe um projeto para estender o JForum a um “sistema de conteúdo” como o Xoops por exemplo?

Rafael_Steil

Voce pode pegar na pagina de downlad do connector/j mesmo. La no ftp tem todas as versoes.
As razoes para o encoding funcionar em uma versao duma maneira e em outra versao de outra maneira geralmente sao pq os desenvolvedores refatoram o codigo por algum motivo. Para ter certeza mesmo, o melhor seria vc verificar com eles.

Nao, nao tem nenhum projeto assim baseado no jforum ainda. Pelo menos nao que eu saiba.

Rafael

pcalcado

renato3110:

PS: vou ver se instalo ainda hoje o JForum aqui na intranet da empresa. Bem queria perguntar uma coisa a respeito, já que você é o mantenedor: não existe um projeto para estender o JForum a um “sistema de conteúdo” como o Xoops por exemplo?

OFF topic vindo… que tal SnipSnap?

[]s

renatosilva

Vlw.

Rafael Steil:

…Nao, nao tem nenhum projeto assim baseado no jforum ainda. Pelo menos nao que eu saiba.

Rafael

Bem estou te perguntando isso porque o que eu quero é montar um site da informática com outroas coisas e não apenas um Fórum, entende? Eu pensei que o GUJ 2.0 fosse uma coisa dessas e baseado no JForum.

SnipSnap? Vou procurar por isso depois.

Criado 21 de fevereiro de 2005
Ultima resposta 23 de fev. de 2005
Respostas 11
Participantes 5