mysql:12432
From: Yasufumi Kinoshita <Yasufumi Kinoshita <kinoshita.yasufumi@xxxxxxxxxx>>
Date: Thu, 10 Nov 2005 20:15:18 +0900
Subject: [mysql 12432] Re: MySQL 日本語問題吐き出し緊急オフ会 -まとめ
木下です。
毎度、勉強になります。
議論をより具体的にするために
Unicode(UCS)、日本語EUCの文字コードにおいて、
「~」形状の文字について
現状のMySQLで行われている変換を一旦整理します。
<ucs2との対応>
1.eucjpms → ucs2
7E → 007E
A1C1 → FF5E
8FA2B7 → FF5E
2.ujis → ucs2
7E → 007E
A1C1 → 301C
8FA2B7 → 007E
3.ucs2 → eucjpms
007E → 7E
301C → 3F("?") ※c)案 では A1C1 になる
FF5E → A1C1
4.ucs2 → ujis
007E → 7E
301C → A1C1
FF5E → 3F("?") ※c)案 では A1C1 になる
<上記を踏まえたucs2を介したeucjpmsとujisの変換>
A.eucjpms → ujis
7E → 7E
A1C1 → 3F("?") ※c)案 では A1C1 になる
8FA2B7 → 3F("?") ※c)案 では A1C1 になる
B. ujis → eucjpms
7E → 7E
A1C1 → 3F("?") ※c)案 では A1C1 になる
8FA2B7 → 7E
長くてすいませんが、以上を踏まえて・・^^;
MORIYAMA Masayuki wrote:
> IANA の charset の定義によれば、
>
> Shift_JIS = JIS X 0201:1997 (ラテン文字+片仮名) + JIS X 0208:1997
> EUC-JP = US ASCII + JIS X 0208-1990 + JIS X 0201 片仮名 + JIS X 0212-1990
>
> となっています。
>
> ここで UCS の変換で問題となってくるのは、次の点です。
>
> (1) 0x00~0x7F を JIS X 0201 ラテン文字とするのか、US-ASCII とするのか?
> (2) JIS X 0212 を含めるのか否か?
>
> この辺の問題は、次のページに詳しく取り上げられています。
> http://euc.jp/i18n/ucsnote.ja.html#ascii
>
> (2) に関しては、CP932、eucjpms との関係を考えると、次のような問題が生
> じてきます。
>
> 本来、IANA の定義に従った EUC-JP では、JIS X 0212 2区23点 TILDE を
> US-ASCII の TILDE と区別するために、FULLWIDTH TILDE U+FF5E に対応付け
> されます。
ということは、
A1C1 → FF5E
8FA2B7 → FF5E
な eucjpms も
A1C1 → 301C
8FA2B7 → 007E
な ujis も
どちらも IANA の EUC-JP 「ではない」ということになるのですよね??
(※IANA EUC-JP ではこうでしょうか?
A1C1 → 301C
8FA2B7 → FF5E)
>
> しかし、cp932 などの UCS とのマッピングでは、JIS X 0208 1区33点 WAVE
> DASH (~) を UCS の FULLWIDTH TILDE U+FF5E と対応付けしているため、
>
> cp932 → UCS → EUC-JP
>
> という変換を行うと、次のような変換がされてしまい、区点位置が保存されま
> せん。
>
> ~ 0x8160(cp932) → U+FF5E(UCS) → 0x8FA2B7(EUC-JP)
>
0x8160(cp932) → U+FF5E(ucs2) → 0xA1C1(eucjpms)
0x3F ※c)案 では A1C1 (ujis)
ということでMySQLではcp932での「~」の句点位置はeucjpmsでは保存され、
c)案を適用するとujisでも保存されます。
> ですので、「Unicode -> JIS系文字コードへの変換」で、多対1 の変換を行っ
> て、Unicode マッピングの違いを吸収できるのは、JIS X 0212 を含まない、
> cp932、sjis もしくは、U+FF5E FULLWIDTH TILDE が JIS X 0208 WAVE DASH
> にマッピングされる eucjpms になります。
>
> EUC-JP には、JIS X 0212 が含まれていて、U+FF5E FULLWIDTH を JIS X 0212
> の TILDE と対応付けすべきなので、残念ながら違いを吸収できません。
>
> という事で、UCS 経由では ujis<->eucjpms という変換は、元々不可能な変換
> であると考えておく必要があります。
というわけでeucjpmsもujisも現在はIANAのEUC-JPではないとすると、
UCS 経由での ujis<->eucjpms は、JIS X 0212 2区23点 TILDE (8FA2B7) が
7E か A1C1 に揃えられてしまうことを念頭に使用すれば、
実用上の問題は大きくは無いのではないでしょうか?
確かに厳密なIANAのEUC-JPとの変換をUCS経由でサポートするのは難しいですが。。
・・とここまで書きましたが、1文字だけ実用上拙い文字がありますね。
U+005C \ REVERSE SOLIDUS
と
U+FF3C \ FULLWIDTH REVERSE SOLIDUS
です。
c)案では消えることはなくなりますが、
0xA1C0(ujis) → U+005C(ucs2) → 0x5C(eucjpms)
0x5C(eucjpms) → U+005C(ucs2) → 0xA1C0(ujis)
と逆になってしまいます。。。
個人的には厳密な字形よりも実用性(他のRDBMSとのデータのやり取りなど)を重視して
「/」だけは
0xA1C0(ujis) ←→ U+005C(ucs2)
ではなく
0xA1C0(ujis) ←→ U+FF3C(ucs2)
と変更して欲しいのですが。(シフトJISも) ujis<->eucjpmsのためにも。
困るケースがあるでしょうか??
だんだん頭が痛くなってきました・・^^;
--
木下 靖文
e-mail: kinoshita.yasufumi@xxxxxxxxxx
12372 2005-11-07 18:16 ["Shuichi Tamagawa" <] MySQL 日本語問題吐き出し緊急オフ会 - まとめ 12373 2005-11-07 20:17 ┣[Yasufumi Kinoshita <] 12374 2005-11-07 21:21 ┃┗["Shuichi Tamagawa" <] 12391 2005-11-08 15:59 ┃ ┗[Yasufumi Kinoshita <] 12400 2005-11-08 20:50 ┃ ┗["Shuichi Tamagawa" <] 12402 2005-11-08 21:14 ┃ ┗[Hirofumi Fujiwara <f] 12412 2005-11-09 10:21 ┃ ┣[Hiro Yoshioka <hyosh] 12413 2005-11-09 10:28 ┃ ┃┗[<takeshi@xxxxxxxxxx>] 12414 2005-11-09 10:38 ┃ ┃ ┗[Hiro Yoshioka <hyosh] 12415 2005-11-09 11:56 ┃ ┃ ┗[<takeshi@xxxxxxxxxx>] 12416 2005-11-09 18:43 ┃ ┃ ┗[Hiro Yoshioka <hyosh] 12428 2005-11-10 14:12 ┃ ┃ ┗[<takeshi@xxxxxxxxxx>] 12520 2005-11-30 10:49 ┃ ┣[Tetsuro IKEDA <tetsu] 12525 2005-12-01 13:26 ┃ ┃┗[Hirofumi Fujiwara <f] 12598 2005-12-21 08:20 ┃ ┗[Tetsuro IKEDA <tetsu] メタデータに2バイト目が`(60)の漢字を使用する場合の不具合の件 12599 2005-12-21 12:43 ┃ ┗[Hirofumi Fujiwara <f] 12377 2005-11-07 23:55 ┣[Tadashi Jokagi <ml@x] 12399 2005-11-08 20:43 ┃┗["Shuichi Tamagawa" <] 12378 2005-11-08 00:11 ┣[<takeshi@xxxxxxxxxx>] 12380 2005-11-08 09:27 ┃┣["Shuichi Tamagawa" <] 12381 2005-11-08 09:36 ┃┃┗[<takeshi@xxxxxxxxxx>] 12403 2005-11-08 21:22 ┃┃ ┗[とみたまさひろ <tomm] 12405 2005-11-08 21:42 ┃┃ ┗[<takeshi@xxxxxxxxxx>] 12397 2005-11-08 20:29 ┃┗["Shuichi Tamagawa" <] 12401 2005-11-08 21:11 ┃ ┗[とみたまさひろ <tomm] 12404 2005-11-08 21:27 ┃ ┣[Hirofumi Fujiwara <f] 12406 2005-11-08 21:52 ┃ ┣[<takeshi@xxxxxxxxxx>] 12417 2005-11-09 19:46 ┃ ┃┣[とみたまさひろ <tomm] 12418 2005-11-09 20:15 ┃ ┃┃┗[<takeshi@xxxxxxxxxx>] 12419 2005-11-10 11:13 ┃ ┃┃ ┗[Yasufumi Kinoshita <] 12425 2005-11-10 13:21 ┃ ┃┃ ┣[<takeshi@xxxxxxxxxx>] 12429 2005-11-10 14:47 ┃ ┃┃ ┗[MORIYAMA Masayuki <m] -> 12432 2005-11-10 20:15 ┃ ┃┃ ┗[Yasufumi Kinoshita <] 12433 2005-11-11 00:37 ┃ ┃┃ ┗[MORIYAMA Masayuki <m] 12435 2005-11-11 19:54 ┃ ┃┃ ┗[Yasufumi Kinoshita <] Re: MySQL 日本語問題吐き出し緊急オフ会 -まとめ 【c案整理】 12440 2005-11-12 11:48 ┃ ┃┃ ┣[MORIYAMA Masayuki <m] 12441 2005-11-12 12:52 ┃ ┃┃ ┃┗[MORIYAMA Masayuki <m] 12442 2005-11-13 14:06 ┃ ┃┃ ┣[MORIYAMA Masayuki <m] 12452 2005-11-14 11:20 ┃ ┃┃ ┃┗[MORIYAMA Masayuki <m] 12453 2005-11-14 12:51 ┃ ┃┃ ┃ ┣["Shuichi Tamagawa" <] 12462 2005-11-16 11:18 ┃ ┃┃ ┃ ┃┗[MORIYAMA Masayuki <m] 12464 2005-11-16 15:05 ┃ ┃┃ ┃ ┃ ┗["Shuichi Tamagawa" <] 12454 2005-11-14 15:27 ┃ ┃┃ ┃ ┗[Yasufumi Kinoshita <] Re: MySQL 日本語問題吐き出し緊急オフ会 -まとめ 【c案整理】皆様のご意見をお願いします。 12461 2005-11-16 03:10 ┃ ┃┃ ┃ ┣[MORIYAMA Masayuki <m] 12463 2005-11-16 15:00 ┃ ┃┃ ┃ ┗["Shuichi Tamagawa" <] 12466 2005-11-17 11:34 ┃ ┃┃ ┃ ┗[Yasufumi Kinoshita <] 12468 2005-11-17 15:46 ┃ ┃┃ ┃ ┗["Shuichi Tamagawa" <] 12470 2005-11-17 16:36 ┃ ┃┃ ┃ ┗[Yasufumi Kinoshita <] 12473 2005-11-17 17:48 ┃ ┃┃ ┃ ┗["Shuichi Tamagawa" <] 12448 2005-11-14 09:14 ┃ ┃┃ ┗["Shuichi Tamagawa" <] 12426 2005-11-10 13:57 ┃ ┃┗["Shuichi Tamagawa" <] 12427 2005-11-10 14:02 ┃ ┃ ┗[<takeshi@xxxxxxxxxx>] 12411 2005-11-09 09:15 ┃ ┗["Shuichi Tamagawa" <] 12475 2005-11-18 09:48 ┗["Shuichi Tamagawa" <] 12476 2005-11-18 09:54 ┣["Ryuichiro Munechika] 12613 2005-12-28 16:59 ┗["Shuichi Tamagawa" <]