From: "NARUSE, Yui" Date: 2010-03-04T22:45:57+09:00 Subject: [ruby-dev:40560] Re: [Feature #2833] 絵文字エンコーディングの提案 成瀬です。 (2010/03/04 13:29), takeru sasaki wrote: >> まず、「文字コードの変換」というのはわたしはバイト列同士の変換だと考えています。 >> つまり、バイト単位で読み込み、判定し、別のバイト列に変えるのが文字コード変換のレイヤです。 >> 一方、そのニーズは文字単位で差し替えたいという話なのですから、レイヤが違うのではないでしょうか。 > > emoji4unicodeも文字単位で置き換えているように見えるのですが違うのでしょうか? >> この置換法則は emoji4unicode の成果物である >> http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html >> この表で定義されているものが一般的なんだと思っています。 > 明らかに「絵」が違うけど「同じこと/もの」を指しているっぽいから文字単位で置き換えましょう、 > という仕様だとおもうのです。 その変換は変換元と文字集合が違いますから。 >> 思うに、そのニーズで真に正しい対処は変換表に手をいれることではなく、 >> DBに保存する前の UTF-8 などの段階でどれかの絵文字に揃える正規化をかけるか、 >> それぞれの端末向けの文字コードに変換にしたあとで、独自の正規化をかけるのが正解でしょう。 > > 要件次第なのですが、「どれかの絵文字に揃える正規化」をしてしまうと、掲示板に書き込んだ自分の > コメントの中の絵文字が入力したものと違う絵文字で表示されたりします。GoogleのUTF8ではこれは > 起こらなかったはずです。 > > 「それぞれの端末向けの文字コードに変換にしたあとで、独自の正規化」をしようとしてもGoogleの変換 > を使ってしまった時点で元の絵文字が「どのキャリアのどの絵文字」だったかがわからなくてどうにも > ならなくて困ったりもします。 変換を使っても、変換途中なら元がどのキャリアかまではわかりますよね。 で、原規格分離 (ソース分離) されていれば、どの絵文字かまで理屈としては特定可能なはずです。 ちょっと考えた限りでは、「どうにもならない」事にはならないと思います。 なるケースがあったら考え直すので教えてください。 > 実はjpmobileの「softbankを0x1000ずらす方式」はGoogleのUTF8よりも良い点があります。 > GoogleのUTF8に1度変換してしまうと入力元のキャリアが何であったかがわからなくなってしまう > のですが、jpmobileの方式だと元キャリアはコードの範囲からわかるのです。 > 情報(=元キャリア)の欠落がありません。 で、この主張は想定していました。 まとめると、 UTF-8 でもどのキャリアかわかればどの絵文字だったかわかる UTF8-Google だと、もとがケータイ絵文字だったか、PCからの入力か区別できる jpmobile 方式だと、単体でどのキャリアのどの絵文字だったかわかる と、考えると、UTF8-Google は中途半端な気がするんですよね。 PC からの「晴れ」マークと、絵文字からの「晴れ」が混同されるのは、 正しいのか意図しない挙動なのか、とかちょっと迷う所。 まぁ、この辺は将来の携帯電話が U+2600 とユーザ定義エリアの「晴れ」を別々に 送って来ない限り対処は可能なので……。 -- NARUSE, Yui