PHP開発における絵文字表現を伴ういくつかの処理方法

WBOY
リリース: 2016-06-23 13:01:18
オリジナル
911 人が閲覧しました

ここ数か月間、私は WeChat の開発を頻繁に行っており、WeChat のニックネームを保存することが不可欠ですが、邪悪な WeChat はニックネームとして絵文字表現をサポートしているため、これは少し面倒です

一般に、Mysql テーブルを設計する場合。 , UTF8 文字が設定されて使用されます。絵文字を含むニックネームフィールドを挿入すると、フィールド全体が空の文字列になります。どうしたの?

Mysql の utf8 文字セットは 3 バイトであるのに対し、絵文字は 4 バイトであるため、ニックネーム全体を保存できないことがわかりました。何をするか?いくつかの方法を紹介します

1. utf8mb4 文字セットを使用します

mysql バージョン >=5.5.3 の場合は、utf8 を utf8mb4 文字セットに直接アップグレードできます

この 4 バイトの utf8 エンコーディングは、古い 3 バイトの utf8 文字セットを使用し、絵文字表現を直接保存できます。これが最良の解決策です。

バイト数の増加によるパフォーマンスの低下については、私はいくつかのレビューを読みましたが、ほとんど無視できます。 Base64エンコード

何らかの理由でutf8mb4を使用できない場合は、国を救うためにbase64を使用することもできます

base64_encodeなどの関数を使用すると、エンコードされた絵文字をutf8文字で直接保存できます Jiejiのデータテーブルでは、デコードするだけです

3. 絵文字表現を削除する

絵文字表現は保存できても、完全に表示されない場合があります。 PCやAndroidなどiOS以外のプラットフォームでも。絵文字を表示する必要がある場合は、大量の絵文字画像を用意し、サードパーティのフロントエンド ライブラリを使用する必要があります。それでも、絵文字画像が十分ではないため、表示できない場合があります。ほとんどのビジネスシーンでは、絵文字は必要ありません。これを適切に削除して、さまざまなコストを節約することを検討できます

何度も Google で検索した結果、最終的に信頼できる使用可能なコードを見つけました。

rrree

基本的な考え方は、文字列の If 内の各文字をトラバースすることです。文字の長さが 4 バイトの場合、削除されます。

転載元:pein0119

最近やった小さなプロジェクトと同様に、方法3で解決しました。これは便利で手間がかかりません

この記事は私のブログSuper Xiaoziにも掲載されています。 、頻繁に遊びに来てください

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート