problema de conjunto de caracteres no mysql - mysql, codificação de caracteres

O ambiente do Mysql está seguindo:

character_set_database="big5"

E quando eu envio um SQL que contém chinês tradicional

(como "select * from a where name = "中")

do jdbc ao banco de dados mysql, ele lançará a seguinte exceção:

Illegal mix of collations (big5_chinese_ci,IMPLICIT), (latin1_swedish_ci,COERCIBLE), (latin1_swedish_ci,COERCIBLE) for operation " IN ""

Como posso resolver isso ?

Mas precisamos fazer isso entre oracle e mysql,e quando meu programa pegar os dados do oracle (ele esta codificando ISO-8859-1) e passá-lo para a instrução SQL no JDBC, ele vai ter esse problema, mas não consigo alterar o collation do oracle. Como resolver isso? Por que o JSP não pode resolver isso automaticamente?

Eu tentei converter, mas os caracteres chineses não podem ser salvos no conjunto de caracteres Latin1. isso pode causar o problema?

Respostas:

1 para resposta № 1

Verifique seus agrupamentos. O próprio banco de dados pode ter um agrupamento e as tabelas outro totalmente diferente. Se você misturar agrupamentos de duas tabelas, receberá esse erro.

Além disso, o agrupamento swedish parece ser o padrão para bancos de dados (não tem idéia do porquê).


0 para resposta № 2

Qual é a sua codificação no seu lado do projeto java? Você certificou-se de que ele é big-5 também?


0 para resposta № 3

O JSP não pode "resolver" o problema. Como o JSP deve saber o que você quer?

Você faz alguma transformação de codificação em seu JSP ou simplesmente coloca os dados do oracle no banco de dados mysql?

Em geral, é importante ter a mesma codificação em seu script, suas tabelas e muito importante na conexão com o banco de dados.


Perguntas relacionadas
Cardápio