ここ数か月間、私は WeChat の開発を頻繁に行っており、WeChat のニックネームを保存することが不可欠ですが、邪悪な WeChat はニックネームとして絵文字表現をサポートしているため、これは少し面倒です
一般に、Mysql テーブルを設計する場合。 , UTF8 文字が設定されて使用されます。絵文字を含むニックネームフィールドを挿入すると、フィールド全体が空の文字列になります。どうしたの?
Mysql の utf8 文字セットは 3 バイトであるのに対し、絵文字は 4 バイトであるため、ニックネーム全体を保存できないことがわかりました。何をするか?いくつかの方法を紹介します
mysql バージョン >=5.5.3 の場合は、utf8 を utf8mb4 文字セットに直接アップグレードできます
この 4 バイトの utf8 エンコーディングは、古い 3 バイトの utf8 文字セットを使用し、絵文字表現を直接保存できます。これが最良の解決策です。
バイト数の増加によるパフォーマンスの低下については、私はいくつかのレビューを読みましたが、ほとんど無視できます。 Base64エンコード何らかの理由でutf8mb4を使用できない場合は、国を救うためにbase64を使用することもできます
3. 絵文字表現を削除する
絵文字表現は保存できても、完全に表示されない場合があります。 PCやAndroidなどiOS以外のプラットフォームでも。絵文字を表示する必要がある場合は、大量の絵文字画像を用意し、サードパーティのフロントエンド ライブラリを使用する必要があります。それでも、絵文字画像が十分ではないため、表示できない場合があります。ほとんどのビジネスシーンでは、絵文字は必要ありません。これを適切に削除して、さまざまなコストを節約することを検討できます
基本的な考え方は、文字列の If 内の各文字をトラバースすることです。文字の長さが 4 バイトの場合、削除されます。
転載元:pein0119
最近やった小さなプロジェクトと同様に、方法3で解決しました。これは便利で手間がかかりません
この記事は私のブログSuper Xiaoziにも掲載されています。 、頻繁に遊びに来てください