2017-09-03 15 views
-1

私のデータベースに絵文字を保存しようとしましたが、このように保存されています '(ŸŸ~€ŸŸ~')。どうすれば私のPHPウェブサイトにEMOJIとして表示できますか?私は何をすべきか?Emoji as PHP

答えて

1

PHPはこの部分に依存しません。それはバイナリを理解するだけです。絵文字を正しく表示する責任は、Webページだけです。

正確には、PHPは文字列を一連のバイトとして格納します。絵文字は4バイト(または4バイト以上)の大きさです。間違ったエンコーディングでバイナリデータが表示された場合、このアーティファクトが表示されます。 、

1を

header('Content-type: text/plain; charset=utf-8'); 
+0

しかし、私はどのように私のブラウザに絵文字として表示することができますか? –

+0

私はそれのようなメタタグを持っていますが、それはまだプッシーキャットのように表示されています。(... '(' ... ' –

0

いくつかの可能性のある問題:代わりにあなたのページは、PHP側でも

<head> 
    <meta charset="UTF-8"> 
</head> 

など何かを適切なUnicodeエンコーディングを持っていることを確認してくださいあなたが使用している場合MySQLとutf8キャラクタセットの場合、MySQLはデフォルトでこの問題を処理しないため、MySQLのUTF8はUTF8ではありません。実際の4バイトutf8の3バイトのサブセットですemojisをカバーし、MySQLは実際のutf8はutf8mb4であり、デフォルトで無効な4バイト文字はランダムなごみに切り詰められます(しかし、STRICT_TRANS_TABLESまたはTRADITIONAL SQL_MODEを有効にするとこの狂気のような動作を避けることができます)。ただし、utf8からutf8mb4に遡って変更すると、既存の破損したデータを修復する:(

2:レスポンスヘッダーに文字セットを指定しない、または悪いことに、間違った文字セットを指定する。残念ながら、キャラクタセットに特化していない場合、ブラウザはISO-8859-1キャラクタセットを使用しているとみなします。ヘッダーContent-Type: text/html; charset=utf-8を明示し、ブラウザにあなたのHTMLがutf-8でエンコードされていることを明示してください。そのようにレンダリングされる。