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)
目次1. この Web サイトには SQL インジェクションの脆弱性がある可能性があることが判明しま...
今日は、参考までに、jsを使用してカルーセルマップの効果を実現する方法についてお話ししましょう。具体...
目次1. 接続管理2. オプティマイザレベルでの改善3. 機能の改善4. パフォーマンススキーマの最...
次の2つの関数は、 FIND_IN_SETと同じように使用されます。使用する場合、 FIND_IN_...
1. 50と93では鏡像が消える [root@h50 /]# df -h ファイルシステムの使用済み...
1. 概念分析 1: UE ユーザー エクスペリエンス <br />英語ではユーザー エ...
目次1. 基本的なSELECT文1. 指定されたフィールドをクエリする3. エイリアスを設定する4....
目次方法1方法2 nginxをインストールした後、PHPコードを解析できないことがわかりました。解決...
目次1. 準備Redisイメージを取得する2. Redis Sentinel マスタースレーブモード...
W3C では、さまざまなタグの規定を設定するだけでなく、Web ページの作成者が実際に W3C 規...
現在、DockerイメージのほとんどはDebianベースです # cat /etc/issue De...
a タグは主にページ ジャンプを実装するために使用され、これは href 属性または onclick...
私はかつて、ウェブサイトを一度も構築したことのない人々が、初心者向けのウェブサイト構築方法に関する私...
1. コンテナにnginxサービスをデプロイするcentos:7 イメージはコンテナを実行し、このコ...
私たちは Web 開発者として、プロの DBA ではありませんが、データベースなしではやっていけませ...