MySQL UTF-8 エンコーディング MySQL は 2003 年のバージョン 4.1 から UTF-8 をサポートしていますが、現在普及している UTF-8 標準 (RFC 3629) はそれ以降に規定されました。このため、MySQL の UTF-8 は日常の開発における UTF-8 と一致しておらず、いくつかの問題が発生します。 MySQL の UTF-8 は 1 文字あたり最大 3 バイトしかサポートしませんが、実際の UTF-8 は 1 文字あたり最大 4 バイトをサポートします。 問題の再現 データベーステーブルは次のとおりです: utf8 エンコード データベースにレコードを追加します。 @テスト パブリックボイドテスト挿入() { ユーザー user = new User(); ユーザー名を設定します。 ユーザー.setPassword("123456"); userRepo.save(ユーザー); } 以下はコードの一部です。理解できなくても問題ありません。以下は、ユーザー テーブルにレコードを挿入するコードです。ユーザー名は\uD83D\uDE00です。 実際、\uD83D\uDE00 は絵文字です。 MySQL の utf8 文字セットは 3 バイト UTF-8 エンコーディングの Unicode 範囲のみをサポートし、絵文字は 4 バイト エンコーディング部分に属するため、プログラムは期待どおりに実行するとエラーを報告します。次のコードを実行します: 予想通り、エラーが報告されました。 問題を解決する MySQL の UTF-8 には欠陥があるにもかかわらず、MySQL (mariadb を含む) 関係者はこのバグを修正せず、代わりに 2010 年に再リリースされた「utf8mb4」を通じて本物の UTF-8 をサポートしました。したがって、この問題を解決するには、MySQL データベースを utf8mb4 文字セットに設定するしかありません。 要約する この問題は、データを保存するときに絵文字表現が保存されたために発見されました。実は、MySQLを使い始めたときにutf8mb4を発見したのですが、UTF8とUTF8MB4の違いがわかりませんでした。この教訓を踏まえて、今後MySQLを使用するときは文字セットをutf8mb4に設定することにします。 さて、今回の記事は以上です。この記事の内容が皆さんの勉強や仕事に少しでも参考になれば幸いです。123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: WeChat アプレット ピッカー マルチ列セレクター (モード = multiSelector)
導入MySQL はレプリケーションを通じてストレージ システムの高可用性を実現します。現在、MySQ...
Nexus のデフォルトのリモートリポジトリは https://repo1.maven.org/ma...
目次バックエンド: Rails API部分フロントエンド: React部分Reactコンポーネントa...
この記事の例では、衝突検出を実装するためのjsの具体的なコードを参考までに共有しています。具体的な内...
HTML でアンカーの位置を設定する方法はいくつかあるので、ここで紹介します。 1. ID ポジショ...
この記事の例では、円形の水のアニメーションを実現するためのキャンバスの具体的なコードを参考までに共有...
インターネット技術の発展に伴い、ユーザーはますます Web ページに依存するようになり、Web フロ...
docker-compose.ymlを作成し、次の内容を入力します。 バージョン: '3...
1. インデックスの利点と欠点利点: 高速検索、高速グループ化および並べ替えデメリット: ストレージ...
データベースの組み込み関数の使用この記事では、主に日付関数、文字列関数、数学関数など、データベースの...
1. cmakeをインストールする1. cmakeの圧縮パッケージを解凍する [root@mysql...
この記事では、例を使用して、MySQL スケジュール タスクの実装と使用方法を説明します。ご参考まで...
<br />昨日、W3C で新しいHTML 5 ドラフト (ワーキング ドラフト) が ...
HTML でよく使用されるエスケープ文字をまとめると次のようになります。 改行...
目次1. 前に書く2. ポップアップウィンドウを実装するためのオーバーレイ2.1 vueページのad...