J2SE 1.5.0での文字コード一覧とConnector/Jにおけるコードマッピング
J2SE 1.4.2_08の環境でも既に動作が確認されているものがあるが,今後の日本語対応を拡張していく上でメモとして残しておきたい文字コードを以下に.
EUC-JP | EUC_JP | JISX 0201、0208、0212、EUC エンコーディング、日本語 |
ISO-2022-JP | ISO2022JP | ISO 2022 形式の JIS X 0201、0208、日本語 |
Shift_JIS | SJIS | Shift-JIS、日本語 |
windows-31j | MS932 | Windows 日本語 |
x-euc-jp-linux | EUC_JP_LINUX | JISX 0201、0208、EUC エンコーディング、日本語 |
x-eucJP-Open | EUC_JP_Solaris | JISX 0201、0208、0212、EUC エンコーディング、日本語 |
x-IBM33722 | Cp33722 | IBM-eucJP - 日本語 (5050 のスーパーセット) |
x-IBM930 | Cp930 | UDC 4370 文字を含む日本語カタカナ漢字、5026 のスーパーセット |
x-IBM939 | Cp939 | UDC 4370 文字を含む日本語ラテン文字漢字、5035 のスーパーセット |
x-IBM942 | Cp942 | IBM OS/2 日本語、Cp932 のスーパーセット |
x-IBM942C | Cp942C | Cp942 の拡張 |
x-IBM943 | Cp943 | IBM OS/2 日本語、Cp932 および Shift-JIS のスーパーセット |
x-IBM942C | Cp942C | Cp943 の拡張 |
結構あるな.
Connector/J ver3.1.8+におけるJavaToMySQL変換状況
-EUC_JP → ver5.0.3まではujis,それ以降はeucjpmsへマッピング -ISO2022JP → 未対応 -SHIFT_JIS(SJIS) → sjisへマッピング -WINDOWS-31J(MS932) → ver5.0.3まではsjis,それ以降はcp932へマッピング -EUC_JP_LINUX → 未対応 -EUC_JP_Solaris(EUC_JP_Open) → 未対応 -CP930 → 未対応 -CP939 → 未対応 -CP942 → 未対応 -CP942C → 未対応 -CP943 → sjisへマッピング -CP943C → 未対応 -(CP932) → cp932
Connector/J ver3.1.8+におけるMysqlToJava変換状況
-eucjpms → EUC_JP -ujis → EUC_JP -cp932 → Windows-31J -sjis → SJIS
JavaToMysqlはCharsets.propertiesから,MysqlToJavaはResultSetをReflectionで中身を覗いて確認しました.cp932→Windows-31Jは明示的な1対1変換なので良いとして,sjis→Shift_JISではなく何故sjis→SJISなのかは個人的にはまだ不明瞭です.まあどっちでも良いと言えば良いですが,今のところMapに追加した順番のせいでそうなっているんじゃ・・・と踏んでいますが.
某氏からEUC_JP_Solarisをeucjpmsにマッピングさせる実装を追加すると良いかもしれないとの話を聞きました.Unicodeとの変換ルールがEUC_JPよりもEUC_JP_Solarisのほうがよりeucjpmsに近いからのようです(完全に一致はしていないとの情報あり).
Java→MySQLの方向のマッピングは未対応のものが数としては結構ありますが,他にもそういう需要ってあるのでしょうか?