Web Forum
このフォームからは投稿できません。
name
e-mail
url
subject
comment

[記事リスト] [新着記事] [ワード検索] [過去ログ] [管理用]

記事No : 888
タイトル Re^5: 入力フォームに投稿した絵文字が正常に表示されない
投稿日: 2011/09/14(Wed) 00:49:47
投稿者revulo

> また、filterのInputを使わずmb_convert_encodingのみで試してみたところ、au端末で絵文字が表示されることを確認いたしました。
>
> $text = mb_convert_encoding($text, 'UTF-8', 'SJIS-win');

au の絵文字は、mb_convert_encoding では正しく変換できないはずなので、
それもおかしな気がするのですが……。
何が原因なのかよく分からないので、いろいろ書いてみます。

まず、この2つのサンプルはどう表示されますか?
どのキャリアの携帯でも、4種類の絵文字が表示されるはずです。

http://libemoji.com/example/utf8.php
http://libemoji.com/example/utf8_to_sjis.php

HTML_Emoji の examples ディレクトリに同じサンプルが入っていますので、
それをそちらのサーバでも試してみて下さい。
もし結果が違ったら、サーバの設定の問題だと思います。

次に、HTML/Emoji/Au.php に _convertSjisToUtf8 という関数があります。
この関数の中身は、

$text = mb_encode_numericentity($text, $this->_sjismap, 'SJIS-win');
$text = mb_convert_encoding($text, 'UTF-8', 'SJIS-win');
return $this->decodeNumericentity($text, $this->_utf8map, 'UTF-8');

のようになっています。これを例えば、

echo bin2hex($text);
$text = mb_encode_numericentity($text, $this->_sjismap, 'SJIS-win');
echo bin2hex($text);
$text = mb_convert_encoding($text, 'UTF-8', 'SJIS-win');
echo bin2hex($text);
$text = $this->decodeNumericentity($text, $this->_utf8map, 'UTF-8');
echo bin2hex($text);
return $text;

のようにするなどして、各行でどのような値に変換されているのか、
チェックしてみていただけないでしょうか?

また、mb_convert_encoding 単体で変換してうまくいった場合には、
どのような値からどのような値に変換されているのか、チェックしてみて下さい。

あと、違うかもしれませんが、どこかで HTML_Emoji 以外の何かが、
エンコーディングの変換を行ったりしていないでしょうか?
例えばですが、mb_convert_encoding($text, 'SJIS-win' 'UTF-8') という変換が、
出力時に行われていると仮定すると、
mb_convert_encoding($text, 'UTF-8', 'SJIS-win') で au の絵文字が変換できた、
というのも説明が付きます。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
subject 入力禁止
Title 入力禁止
Theme 入力禁止
タイトル
URL 入力禁止
URL
メッセージ   手動改行 強制改行 図表モード
メッセージには上記と同じURLを書き込まないで下さい
削除キー (英数字で8文字以内)
  プレビュー

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No 削除キー