mysql:12454
From: Yasufumi Kinoshita <Yasufumi Kinoshita <kinoshita.yasufumi@xxxxxxxxxx>>
Date: Mon, 14 Nov 2005 15:27:00 +0900
Subject: [mysql 12454] Re: MySQL 日本語問題吐き出し緊急オフ会 -まとめ 【c案整理】皆様のご意見をお願いします。
木下です。
また長文になりますが、文字化け問題に興味のある方は是非読んでください。
森山さん。ありがとうございます。
詳しい方に補足していただけて助かります。
玉川さん。大切な問題ですので、もう少し時間をください^^;
マッピングの追加という主旨から少しだけずれるのですが、
ここまでの(森山さんと私の)議論の中で、私自身の基本主張に反するのですが、
変えたほうがよいと思われるマッピングが2箇所だけ(私個人的には片方だけ)
に絞られてきたかと思います。
既存マッピング変更の是非は、私と森山さんの話し合いだけでは決定できないので、
他の皆様のご意見を伺うために一旦まとめさせていただきます。
-----------------------------------------------------------
以下の2点の変更の是非についてご意見をお聞かせください。
(反対意見:既存のMySQLとの互換性で困る具体的ケースなど。)
-----------------------------------------------------------
<1点目:sjis、ujisの全角「\」がUnicodeの半角 U+005C と双方向変換な点>
(改善のためには多かれ少なかれマッピングの変更が必要。
全角「\」は U+FF3C と双方向変換にし、半角は U+005C と双方向変換にする)
-現状評価(偏見^^;)-
何らかの規格適合性 :多分×
他の処理系との互換性: ×
利便性 : ×
sjis、ujisから他のコードへ変換する際、「\」は必ず「\」になる。
他のコードからsjis、ujisへ変換する際、「\」は必ず「\」になる。
sjis、ujis同士(自身含む)の変換する際、「\」は必ず「\」になる。
確かにUnicode コンソーシアムの変換表(規格ではない)ではそうなっているのですが、
実用上の不具合を考慮して「/」と「\」は区別するのが常道です。
実際このようなマッピングをする処理系を私は知りません。
- 私個人の意見としては、
他の処理系との互換性を考えると既存の仕様を「バグ」として修正すべきと考えます。
実際この仕様のせいでsjis、ujisを使うのを避けている方も多いと思います。
避けている人しかいないのであれば既存MySQLへの互換性に影響は無いと思いますし、
またこの仕様を踏まえて使っている場合も、
・変換を避ける
・「\」を使用しない
などの対処の場合は変更後も特に影響が出ないかと思われます。
いかがでしょうか?
-マッピング変更後-
何らかの規格適合性 :多分○
他の処理系との互換性: ○
利便性 : ○
「/」と「\」が混ざることは無くなります。
<2点目:ujisでの補助漢字のtildeの扱い>
(改善のためには「別の文字に”合流”させ互換を諦める」または「マッピングを変更する」)
ちょっと事情が複雑になります。
現状の図
ujis ucs2 eucjpms
7E <-------> 007E <-------> 7E
↑
8FA2B7 -+ +--> 301C +- 8FA2B7
| ↓
A1C1 <---+ FF5E <-------> A1C1
分かりやすく書くと、補助漢字のtilde(EUC:8FA2B7)はujisからだと半角に、
eucjpmsからだと全角に揃えられます。
しかし全角同士の割り当てが違うためにujis<->eucjpms間では全角は消失します。
そこで文字が消失しないように変換を割り当てなければいけないのですが、
「全角と半角が変換を繰り返すことによって混ざってしまうことを防ぐ」
ことを考慮すると2通りの対処が考えられます。
【案1.ujis 0x8FA2B7をあくまで半角と考え全角から混ざらないようにする。】
※MySQL自体の互換性を確保する案
FF5E(ucs2) → A1C1(ujis)、
301C(ucs2) → A1C1(eucjpms) を採用するということです。
(変換ルールの追加のみ)
ujis ucs2 eucjpms
7E <-------> 007E <-------> 7E
↑
8FA2B7 -+
------------------------------------------
+--> 301C -+ +- 8FA2B7
| ↓ ↓
A1C1 <---+<-- FF5E <-------> A1C1
ということはつまりujisもeucjpmsも
半角は7E、全角はA1C1に揃え、
補助漢字のtildeは早めにどちらかに合流させてしまうイメージです。
ucs2でのコードが変換方向によって変わってしまいますが、
そんなに大きな問題にはならないのではないかと思います。
【案2.ujis 0x8FA2B7を全角の仲間にする。】
※(Unicodeとのマッピング「だけ」)他の処理系との互換性を取り入れる案
FF5E(ucs2) ←→ 8FA2B7(ujis) にマッピングを変更し、
301C(ucs2) → A1C1(eucjpms) を採用するということです。
ujis ucs2 eucjpms
7E <-------> 007E <-------> 7E
-------------------------------------------
A1C1 <-------> 301C -+ +- 8FA2B7
↓ ↓
8FA2B7 <-------> FF5E <-------> A1C1
Unicodeとのマッピングは他の処理系との互換性があるのですが、
MySQLの場合は必ずUCS2を通す構造になっているため、
(※注:これは多数の文字コードの実装を容易にする良いアーキテクチャだと思います。)
ujisとeucjpms間の全角の変換がujis側で補助漢字のtildeに揃ってしまいます。
よく使われるのは断然 A1C1 の文字ですので、ujisへの変換が少し不自然な印象です。
- 私個人の意見としては
8FA2B7のコードは、ujisでもeucjpmsでも使われるケースの少ない文字かと思います。
(※PostgreSQLでは確かUnicodeに変換すると消えてしまったような気が…。)
なので、MySQL自身の互換性も考慮して既存のマッピングへの変更が無い【案1】が妥当と思います。
上記の2点の懸念点の反映を保留した(変換の追加だけですむ部分のみ)の表を
c案のまとめとして一旦整理します。
森山さんの作成されたフォーマットが分かりやすいので利用させていただきます。
森山さんの表を戻した部分にはコメントを入れています。
【c)案のまとめ】
"+"がついているところが追加
ucs2 → sjis/cp932
ucs2 | sjis | cp932 | char
---------------------------------+--------+--------+-----
005C "Reverse Solidus" | 815F | 5C | \ ←本当は5Cに直したいですね。(上記1点目と関係)
00A5 "Yen Sign" |+5C |+5C | \
---------------------------------+--------+--------+-----
007E "Tilde" | 7E | 7E | ~
203E "Overline" |+7E |+7E | ~ ←賛成です。補足いただき感謝です。
---------------------------------+--------+--------+-----
2014 "Em Dash" |+815C |+815C | ―
2015 "Horizontal Bar" | 815C | 815C | ―
---------------------------------+--------+--------+-----
301C "Wave Dash" | 8160 |+8160 | ~
FF5E "Fullwidth Tilde" |+8160 | 8160 | ~
---------------------------------+--------+--------+-----
2016 "Double Vertical Line" | 8161 |+8161 | ∥
2225 "Parallel To" |+8161 | 8161 | ∥
---------------------------------+--------+--------+-----
2212 "Minus Sign" | 817C |+817C | -
FF0D "Fullwidth Hyphen-Minus" |+817C | 817C | -
---------------------------------+--------+--------+-----
00A2 "Cent Sign" | 8191 |+8191 | ¢
FFE0 "Fullwidth Cent Sign" |+8191 | 8191 | ¢
---------------------------------+--------+--------+-----
00A3 "Pound Sign" | 8192 |+8192 | £
FFE1 "Fullwidth Pound Sign" |+8192 | 8192 | £
---------------------------------+--------+--------+-----
00AC "Not Sign" | 81CA |+81CA | ¬
FFE2 "Fullwidth Not Sign" |+81CA | 81CA | ¬
---------------------------------+--------+--------+-----
00A6 "Broken Bar" | ---- |+FA55 | (JISX0208外) ←賛成です。補足いただき感謝です。
FFE4 "Fullwidth Broken Bar" | ---- | FA55 | (JISX0208外)
---------------------------------+--------+--------+-----
ucs2 → ujis/eucjpms
ucs2 | ujis |eucjpms | char
---------------------------------+--------+--------+-----
005C "Reverse Solidus" | A1C0 | 5C | \ ←本当は5Cに直したいですね。(上記1点目と関係)
00A5 "Yen Sign" |+5C |+5C | \
---------------------------------+--------+--------+-----
007E "Tilde" | 7E | 7E | ~
203E "Overline" |+7E |+7E | ~ ←賛成です。補足いただき感謝です。
---------------------------------+--------+--------+-----
2014 "Em Dash" |+A1BD |+A1BD | ―
2015 "Horizontal Bar" | A1BD | A1BD | ―
---------------------------------+--------+--------+-----
301C "Wave Dash" | A1C1 |+A1C1 | ~
FF5E "Fullwidth Tilde" |+(保留) | A1C1 | (注意) ←(上記2点目の結論次第)
---------------------------------+--------+--------+-----
2016 "Double Vertical Line" | A1C2 |+A1C2 | ∥
2225 "Parallel To" |+A1C2 | A1C2 | ∥
---------------------------------+--------+--------+-----
2212 "Minus Sign" | A1DD |+A1DD | -
FF0D "Fullwidth Hyphen-Minus" |+A1DD | A1DD | -
---------------------------------+--------+--------+-----
00A2 "Cent Sign" | A1F1 |+A1F1 | ¢
FFE0 "Fullwidth Cent Sign" |+A1F1 | A1F1 | ¢
---------------------------------+--------+--------+-----
00A3 "Pound Sign" | A1F2 |+A1F2 | £
FFE1 "Fullwidth Pound Sign" |+A1F2 | A1F2 | £
---------------------------------+--------+--------+-----
00AC "Not Sign" | A2CC |+A2CC | ¬
FFE2 "Fullwidth Not Sign" |+A2CC | A2CC | ¬
---------------------------------+--------+--------+-----
00A6 "Broken Bar" | 8FA2C3 |+8FA2C3 | (JISX0208外)
FFE4 "Fullwidth Broken Bar" |+8FA2C3 | 8FA2C3 | (JISX0208外)
---------------------------------+--------+--------+-----
以上が現状のまとめです。
ご意見よろしくお願いします。
※メールだとUnicodeは正確に字形が伝わらないですね…
--
木下 靖文
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" <]