Warum ist cp932
erforderlich?
In MySQL entspricht der Zeichensatz sjis
dem von der IANA definierten Zeichensatz
Shift_JIS
, der JIS X0201- und JIS
X0208-Zeichen unterstützt. (Siehe auch
http://www.iana.org/assignments/character-sets.)
Allerdings ist die Bedeutung von „SHIFT JIS“ als
Begriff zu Beschreibungszwecken sehr vage geworden und umfasst
häufig auch die Erweiterungen auf
Shift_JIS
, die von verschiedenen Anbietern
definiert werden.
So ist beispielsweise das in japanischsprachigen
Windows-Umgebungen verwendete „SHIFT JIS“ eine
Microsoft-Erweiterung von Shift_JIS
, deren
exakter Name Microsoft Windows Codepage :
932
oder cp932
lautet. Neben den
von Shift_JIS
unterstützten Zeichen
unterstützt cp932
Erweiterungszeichen wie
NEC-Sonderzeichen, NEC-Auswahl-/IBM-Erweiterungszeichen sowie
IBM-Auswahlzeichen.
Viele japanische Benutzer haben Probleme mit diesen Erweiterungszeichen. Ursache hierfür sind die folgenden Faktoren:
MySQL wandelt Zeichensätze automatisch um.
Zeichensätze werden via Unicode (ucs2
)
konvertiert.
Der Zeichensatz sjis
unterstützt keine
Konvertierung dieser Erweiterungszeichen.
Es gibt mehrere Regeln für die Konvertierung aus dem so genannten „SHIFT JIS“ in Unicode, und je nach Konvertierungsregeln werden einige Zeichen anders in Unicode konvertiert. MySQL unterstützt nur eine dieser Regeln (diese wird weiter unten beschrieben).
Der MySQL-Zeichensatz cp932
wurde
entwickelt, um diese Probleme zu beseitigen.
Weil MySQL die Zeichensatzkonvertierung unterstützt, ist es
wichtig, die beiden Zeichensätze Shift_JIS
(IANA) und cp932
in zwei verschiedene
Zeichensätze aufzuteilen, weil diese unterschiedliche
Konvertierungsregeln bieten.
Wie unterscheidet sich
cp932
von
sjis
?
Der Zeichensatz cp932
unterscheidet sich
von sjis
wie folgt:
cp932
unterstützt NEC-Sonderzeichen,
NEC-Auswahl-/IBM-Erweiterungszeichen sowie
IBM-Auswahlzeichen.
Einige cp932
-Zeichen haben zwei
verschiedene Codepunkte, die beide in denselben
Unicode-Codepunkt konvertiert werden. Wenn Sie aus Unicode
in cp932
zurückkonvertieren, muss
einer dieser beiden Codepunkte ausgewählt werden. Bei
solchen „Roundtrip-Konvertierungen“ wird die
von Microsoft empfohlene Regel verwendet. (Siehe auch
http://support.microsoft.com/kb/170559/EN-US/.)
Die Konvertierungsregel funktioniert wie folgt:
Wenn das Zeichen sowohl in JIS X 0208 als auch in den NEC-Sonderzeichen enthalten ist, wird der Codepunkt von JIS X 0208 verwendet.
Wenn das Zeichen sowohl in den NEC-Sonderzeichen als auch in den IBM-Auswahlzeichen enthalten ist, wird der Codepunkt für NEC-Sonderzeichen verwendet.
Wenn das Zeichen sowohl in den IBM-Auswahlzeichen als auch in den NEC-Auswahl-/IBM-Erweiterungszeichen enthalten ist, wird der Codepunkt für IBM-Erweiterungszeichen verwendet.
Die unter
http://www.microsoft.com/globaldev/reference/dbcs/932.htm
gezeigte Tabelle enthält Informationen zu den
Unicode-Werten der cp932
-Zeichen. Bei
cp932
-Tabelleneinträgen mit Zeichen,
unter denen eine vierstellige Zahl erscheint, stellt diese
die entsprechende Unicode-Kodierung
(ucs2
) dar. Bei Tabelleneinträgen mit
einem unterstrichenen zweistelligen Wert gibt es einen
Bereich mit cp932
-Zeichenwerten, die
bei diesen beiden Stellen beginnen. Wenn Sie auf einen
solchen Tabelleneintrag klicken, gelangen Sie auf eine
Seite, auf der der Unicode-Wert für jedes
cp932
-Zeichen angezeigt wird, das mit
diesen Stellen beginnt.
Die folgenden Links verdienen Ihr besonderes Interesse. Sie entsprechen den Kodierungen der folgenden Zeichenbestände:
NEC-Sonderzeichen:
http://www.microsoft.com/globaldev/reference/dbcs/932/932_87.htm
NEC-Auswahl-/IBM-Erweiterungszeichen:
http://www.microsoft.com/globaldev/reference/dbcs/932/932_ED.htm http://www.microsoft.com/globaldev/reference/dbcs/932/932_EE.htm
IBM-Auswahlzeichen:
http://www.microsoft.com/globaldev/reference/dbcs/932/932_FA.htm http://www.microsoft.com/globaldev/reference/dbcs/932/932_FB.htm http://www.microsoft.com/globaldev/reference/dbcs/932/932_FC.htm
cp932
unterstützt die Konvertierung
benutzerdefinierter Zeichen in Kombination mit
eucjpms
und beseitigt die Probleme bei
der
sjis
-/ujis
-Konvertierung.
Weitere Informationen erhalten Sie unter
http://www.opengroup.or.jp/jvc/cde/sjis-euc-e.html.
Bei einigen Zeichen ist die Konvertierung von und nach
ucs2
bei sjis
und
cp932
unterschiedlich. Die folgenden
Tabellen veranschaulichen diese Unterschiede.
Konvertierung nach ucs2
:
sjis -/cp932 -Wert |
Konvertierung sjis nach
ucs2 |
Konvertierung cp932 nach
ucs2 |
5C | 005C | 005C |
7E | 007E | 007E |
815C | 2015 | 2015 |
815F | 005C | FF3C |
8160 | 301C | FF5E |
8161 | 2016 | 2225 |
817C | 2212 | FF0D |
8191 | 00A2 | FFE0 |
8192 | 00A3 | FFE1 |
81CA | 00AC | FFE2 |
Konvertierung von ucs2
:
ucs2 -Wert |
Konvertierung ucs2 nach
sjis |
Konvertierung ucs2 nach
cp932 |
005C | 815F | 5C |
007E | 7E | 7E |
00A2 | 8191 | 3F |
00A3 | 8192 | 3F |
00AC | 81CA | 3F |
2015 | 815C | 815C |
2016 | 8161 | 3F |
2212 | 817C | 3F |
2225 | 3F | 8161 |
301C | 8160 | 3F |
FF0D | 3F | 817C |
FF3C | 3F | 815F |
FF5E | 3F | 8160 |
FFE0 | 3F | 8191 |
FFE1 | 3F | 8192 |
FFE2 | 3F | 81CA |
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.