2017-10-09 10 views
-6

絵文字シンボルをデータベースレコードに保存しようとしていますが、正しく保存されない場合があります。 私はこれをHow to store Emoji Character in My SQL Databaseと呼んでいますが、まだ動作していません。
上記の質問の解決策として、私は文字セットをutf8からutf8mb4に、そして照合をutf8mb4_binから変更しようとしました。

私はデフォルトにリセットした後、データベーステーブルでそれを変更するようなものを試しました。私はutf8mb4_unicode_ci、utf8_unicode_ci、utf8mb4_binを試しましたが、動作しません。

私はMySQL 5.6バージョンを使用しています。そして、私は以下のクエリ
MySQLバージョン5.6で絵文字(utf8mb4_bin)が動作しません

alter table `users` convert to character set utf8mb4 collate utf8mb4_bin; 

上記のコードは、それがデータベース内UTFタイプを変更することだ、正常に動作しているとの照合を変更しています。しかし、絵文字が正しく、それは疑問符として保存します保存されていません(????)以下

は私のデータベースのテーブル構造の例である:

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'System generated id used for uniqueness', 
    `introduction` longtext COLLATE utf8mb4_bin, 
    `other_details` longtext COLLATE utf8mb4_bin,  
    PRIMARY KEY (`id`), 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=41213 ; 


PHPコードの下に使用して絵文字を保存するには:

$dom = new DOMDocument('1.0', 'UTF-8'); 
$strWithEmoji = ""; 
$fullContent = '<meta http-equiv="content-type" content="text/html; charset=utf-8">' 
       + $strWithEmoji; 
$this->save($fullContent); // Function for saving into database 


私は、正確なホを知りません多くのバイトが保存されていますが、私はこの絵文字 ""を保存しようとしていますが、それは4つの疑問符(????)として保存しています。


私はリンクの下からすべてのソリューションを試してみましたが、私のために働いていなかった:
How to store Emoji Character in My SQL Database
UTF-8 all the way through
The ultimate emoji encoding scheme

+0

@Liamすでに尋ねられたすべての解決策を試しましたが、うまくいきません。 – KRY

+1

2日前に元の質問から何も追加していません。同じ質問を何度も聞かないでください。それは問題ではありません動作していません。 – Liam

+0

@Liam質問が削除されました – KRY

答えて

3

接続が MySQLへutf8mb4を指定する必要があります。 DOMDocumentのカバーの下には何がありますか?

CHARACTER SET utf8mb4のいずれかのコラムで動作するはずの16進数F09F9880です。これはutf8mb4_*となります。ここ

とは別のリンクです:他のすべてが失敗した場合Trouble with UTF-8 characters; what I see is not what I stored

、接続を確立した後、PHPからSET NAMES utf8mb4を実行します。

関連する問題