[Java/MySQL] character set probleem

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Allereerst: de versies waar ik op draai:
MySQL 4.1.8a-log
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)

Connector/J 3.0.15 en 3.1.6 geprobeerd.

Via de MySQL command-line client, en ook via phpMyAdmin zie ik netjes in mijn database 'André' staan, maar als ik via JDBC verbind, dan krijg ik 'André' terug.

In het MySQL < 4.x tijdperk gaf ik aan de JDBC driver 'useUnicode=true&characterEncoding=ISO-8859-1" mee, waardoor ik dit soort problemen kon vermijden.

Met de nieuwe character set functies van MySQL werkt het echter niet meer out-of-the-box.

MySQL settings (over de JDBC verbinding opgevraagd):
code:
1
2
3
4
5
6
7
8
9
10
character_set_client: latin1
character_set_connection: latin1
character_set_database: latin1
character_set_results: NULL
character_set_server: latin1
character_set_system: utf8
character_sets_dir: /apps/mysql/share/mysql/charsets/
collation_connection: latin1_swedish_ci
collation_database: latin1_swedish_ci
collation_server: latin1_swedish_ci
Het enige verschil met een command-line verbinding is 'character_set_results', die is op de command-line namelijk 'latin1';
Om te achterhalen of dit het probleem is, heb ik op de commandline
code:
1
set character_set_results = NULL;
uitgevoerd, en nogmaals gegevens opgevraagd. Dan krijg ik nog steeds correcte output, dus aan die variabele lijkt het niet te liggen.

Heeft iemand hier wat meer kennis van MySQL character set handling, die hier wat zinnigs over kan zeggen?
Ik heb het Connector/J forum(pje) op de MySQL site doorlopen, zonder resultaat. Google levert ook geen relevante hits op.

Acties:
  • 0 Henk 'm!

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Probeer de java vm op te starten met het volgende argument erbij:

-Dfile.encoding=ISO-8859-1

Dus :

java.exe -Dfile.encoding=ISO-8859-1 ....

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Acties:
  • 0 Henk 'm!

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Merci!, dit lost het probleem inderdaad op.

Voordat ik je param probeerde (uitvoer van een testcase die ik gemaakt heb):
code:
1
2
3
4
5
6
7
8
Default conn
André
useUnicode=true
André
useUnicode=true&characterEncoding=UTF-8
André
useUnicode=true&characterEncoding=UTF-8&useOldUTF8Behavior=true
Andrï¿&frac12;


Als ik je -D param gebruik:
code:
1
2
3
4
5
6
7
8
Default conn
André
useUnicode=true
André
useUnicode=true&characterEncoding=UTF-8
André
useUnicode=true&characterEncoding=UTF-8&useOldUTF8Behavior=true
Andr?


Kun je aangeven waarom ik deze param mee moet geven? Heeft sun in de 1.5 JRE soms een andere standaard encoding gekozen?
Het heeft er zeker mee te maken dat deze instelling ook op sockets van toepassing is, en daarmee ook op de Connector/J driver?

Nog even wat debug info toegevoegd aan mijn testcase, en ik zie dat de standaard file.encoding UTF-8 is. Ik zou graag willen weten hoe het komt dat dit mijn probleem veroorzaakt.