Alle vom JDBC-Treiber zum Server geschickten Strings werden
automatisch vom nativen Java-Unicode in die Zeichencodierung des
Clients konvertiert, einschließlich aller mit
Statement.execute()
,
Statement.executeUpdate()
und
Statement.executeQuery()
übermittelten
Anfragen, sowie aller
PreparedStatement
- und
CallableStatement
- Parameter mit Ausnahme der Parameter, die mit
setBytes()
,
setBinaryStream()
,
setAsciiStream()
,
setUnicodeStream()
und
setBlob()
eingestellt wurden.
Vor MySQL Server 4.1 unterstützte Connector/J eine einzige
Zeichencodierung pro Verbindung. Diese konnte entweder
automatisch aus der Severkonfiguration erschlossen oder vom
Benutzer mit den Eigenschaften useUnicode
und "characterEncoding
" eingestellt
werden.
Seit MySQL Server 4.1 unterstützt Connector/J eine einzige
Zeichencodierung zwischen Client und Server, aber beliebig viele
Zeichencodierungen für Daten, die vom Server in
ResultSets
an den Client zurückgeliefert
werden.
Die Zeichencodierung zwischen Client und Server wird automatisch
beim Verbindungsaufbau ermittelt. Die vom Treiber verwendete
Codierung wird auf dem Server mit der Systemvariablen
character_set
(für ältere Server-Versionen
als 4.1.0) oder character_set_server
(für
Server-Versionen ab 4.1.0 ) eingestellt. Weitere Informationen
finden Sie unter Abschnitt 10.3.1, „Serverzeichensatz und -sortierfolge“.
Um die automatische Erkennung der Codierung auf der Clientseite
außer Kraft zu setzen, setzen Sie die Eigenschaft
characterEncoding
in den für die
Server-Verbindung verwendeten URL.
Zeichencodierungen auf der Clientseite geben Sie bitte mit Java-Namen an. In der folgenden Tabelle werden die Java-Namen der MySQL-Zeichensätze aufgeführt:
Übersetzung der Zeichencodierungen von MySQL in Java.
Zeichensatzname in MySQL | Name der Zeichencodierung in Java |
usa7 | US-ASCII |
big5 | Big5 |
gbk | GBK |
sjis | SJIS (oder Cp932 oder MS932 für MySQL Server < 4.1.11) |
cp932 | Cp932 oder MS932 (MySQL Server > 4.1.11) |
gb2312 | EUC_CN |
ujis | EUC_JP |
euc_kr | EUC_KR |
latin1 | ISO8859_1 |
latin1_de | ISO8859_1 |
german1 | ISO8859_1 |
danish | ISO8859_1 |
latin2 | ISO8859_2 |
czech | ISO8859_2 |
hungarian | ISO8859_2 |
croat | ISO8859_2 |
greek | ISO8859_7 |
hebrew | ISO8859_8 |
latin5 | ISO8859_9 |
latvian | ISO8859_13 |
latvian1 | ISO8859_13 |
estonia | ISO8859_13 |
dos | Cp437 |
pclatin2 | Cp852 |
cp866 | Cp866 |
koi8_ru | KOI8_R |
tis620 | TIS620 |
win1250 | Cp1250 |
win1250ch | Cp1250 |
win1251 | Cp1251 |
cp1251 | Cp1251 |
win1251ukr | Cp1251 |
cp1257 | Cp1257 |
macroman | MacRoman |
macce | MacCentralEurope |
utf8 | UTF-8 |
ucs2 | UnicodeBig |
Warnung. Verwenden Sie niemals die Anfrage 'set names' mit Connector/J, da der Treiber dann nicht erkennt, dass der Zeichensatz geändert wurde, und weiterhin den Zeichensatz verwendet, den er beim Einrichten der Verbindung gefunden hat.
Wenn Sie ermöglichen möchten, dass mehrere Zeichensätze vom
Client gesendet werden können, verwenden Sie bitte die
UTF-8-Codierung. Diese können Sie einstellen, indem Sie
entweder utf8
als Standardzeichensatz des
Servers angeben, oder den JDBC-Treiber mit der Eigenschaft
characterEncoding
zur Benutzung von UTF-8
veranlassen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.