0

外国の文字や絵文字の表示に困っています。

明確にするために編集

ユーザーがテキスト フィールドに絵文字を入力すると、サーバー (php) に送信され、データベース (mysql) に保存されます。テキストを表示するとき、JSON でエンコードされた文字列をサーバーから取得し、クライアント側で解析して表示します。

質問: DB に保存されている「トロフィー」の絵文字の文字は、

%uD83C%uDFC6

それがクライアントに送り返されると、絵文字の画像は表示されず、実際には生のエンコードされたテキストが表示されます。

クライアント側にそのテキストを絵文字として読み取らせ、画像を表示させるにはどうすればよいでしょうか?

(すべてiPhone /モバイルサファリで)

ありがとう!

4

3 に答える 3

1

クライアント、Webサーバー、およびデータベーステーブルで使用されているエンコーディングを確認してください。気になる文字を処理できるエンコーディングをすべて使用していることを確認してください。

于 2012-08-08T02:13:49.203 に答える
1

問題は私のMySqlエンコーディングにあるようです... utf8mb4はそれを許可します-残念ながらMySQL v5.5より前では利用できません

于 2012-08-08T23:27:29.270 に答える
0

DBに保存されている「トロフィー」絵文字の文字は%uD83C%uDFC6と表示されます

その後、データはすでに破壊されています。%uエスケープはJavaScript関数に固有でescape()あり、通常は使用しないでください。encodeURIComponentたとえば、JS変数をURLクエリに取り込む必要がある場合は、textarea->PHP処理で標準に準拠したエンコーディングが使用されていることを確認してください。

次に、PHPレイヤーに適切な生のUTF-8文字列があると、基本多言語面の外にある絵文字などの文字をMySQLに格納させることを心配できます。最良の方法は、utf8mb4照合付きの列です。それが利用できない場合は、任意のバイトシーケンスを格納できるバイナリ列を試してください(戻ってきたときにUTF-8として扱います)。ただし、この方法では、大文字と小文字を区別しない比較は行われません。

于 2012-08-10T11:17:29.970 に答える