序文 今日、オープンソース プロジェクトのフィードバック フォームを設計していたところ、絵文字表現を挿入できないという問題に遭遇しました。オンラインで多くの解決策を探しましたが、答えはさまざまで、うまくいくものは見つかりませんでした。 苦労の末、ようやく絵文字表現を挿入することができました。この記事では実装のプロセスを紹介します。興味のある開発者の方はぜひ読んでみてください。 前面に書かれた 私のサーバーは Mac システムで、MySQL は brew を使用してインストールされています。実際の状況に応じて、Windows/Linux では設定ファイルの場所が若干異なる場合があります。 まずエラーメッセージを見てみましょう: chat_system> UPDATE chat_system.feedback t SET t.comments = 'フィードバック情報テスト😂' WHERE t.id = 1 [2020-12-01 21:36:08] [HY000][1366] 行 1 の列 'comments' の文字列値 '\xF0\x9F\x98\x82' が正しくありません [2020-12-01 21:36:08] [HY000][1366] 行 1 の列 'comments' の文字列値 '\xF0\x9F\x98\x82' が正しくありません 実装のアイデア データベースはデフォルトで UTF-8 エンコード形式を使用しているため、通常の文字列は 3 バイト、絵文字は 4 バイトを占めます。現時点では、UTF-8 では不十分です。utf8mb4 文字セットを使用すると、この問題を解決できます。
したがって、私たちがしなければならないことは次のとおりです。
実装プロセス MySQL が設定を読み取るデフォルトの順序は、/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf です。これらの設定ファイルが対応するディレクトリに存在しない場合は、新しいファイルを作成する必要があります。
[mysqld] 文字セットサーバー = utf8mb4 照合サーバー = utf8mb4_unicode_ci init_connect = '名前をutf8mb4に設定' 文字セットクライアントハンドシェイク = false [クライアント] デフォルトの文字セット=utf8mb4 [mysql] デフォルトの文字セット=utf8mb4
# データベースの文字セット エンコーディングを設定します。chat_system は実際の状況に応じたデータベース名です。ALTER DATABASE chat_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# データベース テーブルの文字セット エンコーディングを設定します。chat_system.feedback_comment_reply は、データベース内の対応するテーブル名です。ALTER TABLE chat_system.feedback_comment_reply CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 上記の操作が完了したら、変更が成功したかどうかを確認しましょう。MySQL にログインし、次の SQL ステートメントを実行します。 SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%'; 従属情報が表示されれば修正が完了したことになります。 テストケース 絵文字表現を挿入してテストしてみましょう。 UPDATE chat_system.feedback t SET t.comments = 'フィードバック情報テスト😂' WHERE t.id = 1; 以下に示すように、エラーは報告されず、挿入は成功します。 dataGrap を使用して、データベース テーブルのデータを表示します。以下に示すように、? が表示されています。これは、ソフトウェアがデータを認識できないことを意味します。 論理的に言えば、挿入は成功するはずです。Postman リクエスト インターフェイスで試してみると、正常に表示されます 😄。 上記は、MySQL に Emoji 絵文字を挿入する方法の詳細です。MySQL に Emoji 絵文字を挿入する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Vue フロントエンド開発における階層的にネストされたコンポーネント間の通信の詳細な説明
私は長い間PHPに触れてきましたが、インストール環境は非常に不慣れです。多くの問題に遭遇しました。B...
UDP の理論については詳しく説明しません。UDP に関する HelloWorld プログラムを紹介...
最近ディープラーニングを学ぶためにUbuntu+Python 3.6バージョンを使う必要があるため、...
ハロウィーンではありませんが、Linux の不気味な側面に注目する価値はあります。幽霊、魔女、ゾンビ...
ビジネス ソーシャル ネットワーキング サイト LinkedIn は最近、ナビゲーション バーとユー...
この記事では、JSオブジェクト指向タイピングゲームの具体的なコードを参考までに紹介します。具体的な内...
<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...
Vue+iview メニューとタブのリンク現在、vue+iview を使用してバックエンド管理システ...
目次1. Webshellを書く出力ファイルにシェルを書き込むログファイル書き込みシェル2. U...
目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...
今日、WordPress がデータベースに接続できないことがわかりました。ウィンドウ サーバーにログ...
目次手動バックアップタイマーバックアップ手動バックアップ1) cmd コンソール: mysqldum...
1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...
Element UIのtextarea input自動サイズに設定すると、テキストボックスのデフォル...
目次親コンポーネントリストボックスリストコンポーネントボタンコンポーネント PageButton昨年...