[PHP-users 5572] Re: i-mode絵文字の扱いについて
TAKAHASHI Masayoshi
php-users@php.gr.jp
Wed, 20 Feb 2002 12:59:31 +0900
高橋征義です。
Go Hamamura <hamamura@mvb.biglobe.ne.jp>さん:
> output_buffering = Off
> mbstring.http_input = pass
> mbstring.http_output = pass
>
> として実行したところ、まさに
>
> aaa2aaa4aaa6aaa8aaaae6ca
>
> が表示されました。
うーん、やっぱりそうですか……。
> >そして「真犯人」はi-mode絵文字の(壊れた)仕様を作った人では
> >ないかと。
>
> ですね。(--;
いちおう補足しておきます。
「撚」といったHTML/XMLでの数値文字参照は、文書そのものの
エンコーディングとは関係なく、必ずISO-10646/Unicodeのコード
ポイントが使われることになっています。
http://www.w3.org/TR/html4/charset.html#h-5.3.1
そして「撚」、16進なら「撚」で指定される文字は、
韓国の文字コードに由来する漢字です。
http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=F991
Unicodeの得意なIEは、i-modeの絵文字など全く気にもとめず(そりゃあ
そうだ)、正しく\uF991なる文字に展開してしまうのでしょう。
が、これをそのまま「あいうえお」と混ぜて、Shift_JISやEUC-JPで
POSTすることはできません。\uF991に相当する文字がShift_JISや
EUC-JPの中にないからです。一方、「あいうえお」は、日本語なのに
KSC5601の中にあったりします。そこで、「あいうえお」の方をKSC5601に
変換して、POSTしてしまうと思われます。
# UTF-8にする、という手もあったと思いますけど。
というわけで、「撚」なんていう、すでにHTMLで別の文字として
使われている文字を絵文字に使う方が悪いと思います。
高橋征義 (TAKAHASHI Masayoshi) Email:maki@inac.co.jp