オレ日記 今日はハレだったよ!\x{E63E} by たなか(docomo user) うそだ!\x{E50F} だっ! by さとう(softbank user) いやいや \x{EC40} でしょう。 by すずき(kddi user)
みたいな HTML があったときに、ページごと x-utf8-* で encode してユーザの端末に配信したい。
問題は ezweb ユーザの扱い。
いままで、x-sjis-ezweb をつかって DB にデータを保存していたので、KDDI の絵文字は表 unicode 領域にマッピングされている場合。全部のデータを変換するとダウンタイムが発生するのでできるだけやりたくない。
x-utf8-* は裏 unicode にしか対応していないので、表Unicodeから裏Unicodeへうごかしたい。
ので、
package Proj::Charset; use autobox::Encode; sub encode { my ($html, $carrier) = @_; $html =~ tr/\x{E543}\x{EF53}.../\x{....}\x{....}..../; # ここでKDDIの絵文字を表から裏にうごかす $html->encode("x-utf8-$carrier"); }
encode のときの挙動はまったく一緒。unicode から sjis への変換はまったく一緒。
違いは decode 時にある。sjis から unicode への変換。sjis から unicode にマッピングするときに、
という違いがあります。
for tomi-ru さん
15:34 tokuhirom: x-utf8-* は 15:35 tokuhirom: 表 utf8 からも encode できるようにした方が便利だなー 15:35 m*******: ? 15:36 tokuhirom: 今の x-utf8-* は 15:36 tokuhirom: 裏 utf8 しかマップにいれてないとです 15:36 tokuhirom: たしか。 15:36 m*******: ああ、みててなんで、とおもった 15:37 tokuhirom: なんでそうしたんだろう…… 15:37 m*******: 表だと Softbankとかぶるから? 15:37 tokuhirom: あー 15:37 tokuhirom: そんな気もします 15:38 tokuhirom: というか、そうですね 15:38 tokuhirom: どういう風にするのがいいんだろうなー 15:39 tokuhirom: softbank を見捨てるという手もひとつありつつ。 15:39 tokuhirom: softbank がかぶってるといっても 15:40 tokuhirom: ページ6のやつだけなので 15:40 tokuhirom: そこだけ au 優先にしちゃうというのが現実的なんですかねえ 15:40 m*******: モジュールとしては美しくないような 15:40 tokuhirom: そうですね 15:41 tokuhirom: x-sjis-* での相互変換ってどうなってましたっけ?
「㋢㋜㋣」とかそういう文字はケータイで表示できるのか、どうか。
で調べてみたところ、いずれも ? または空白になった。
悲しいけど、これ現実なのよね。
ということで、cp932 ベースに ucm をつくった作戦はぼちぼちあたりっぽい。
☀ とかはマッピングしといた方が便利じゃないかという噂もあるけど、まあ意味ないかなーという気もする。
つくってみたよ。みんな入ってね。
http://coderepos.org/share/changeset/4763
URI っぽい感じにするんなら、uri_escape させろよ。
なんとかしないと……。
t/charnames..................Use of uninitialized value $charnames::hint_bits in bitwise or (|) at /home/tokuhirom/project/Encode-JP-Mobile/blib/lib/Encode/JP/Mobile/Charnames.pm line 16. Use of uninitialized value $charnames::hint_bits in bitwise or (|) at /home/tokuhirom/project/Encode-JP-Mobile/blib/lib/Encode/JP/Mobile/Charnames.pm line 16. t/charnames..................ok t/docomo-bruteforce..........ok t/emoji_convert..............ok t/emoji_convert_utf8.........ok t/emoji_convert_utf8_fb......ok t/kddi-bruteforce............ok t/kddi-jis...................ok t/kddi-trans.................ok t/Mobile.....................ok t/softbank-bruteforce........ok t/vodafone-fallback..........ok All tests successful. Files=11, Tests=12582, 9 wallclock secs ( 1.82 usr 0.08 sys + 6.27 cusr 0.14 csys = 8.31 CPU) Result: PASS
【追記】
→ なんとかした。