mysql は絵文字表現 (WeChat 開発ユーザーのニックネーム..) を保存します。
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)
解決策:
1. データベースレベルで解決します (MySQL は utf8mb4 バージョン 5.5.3 以降をサポートしているため、新しいバージョンにアップグレードする必要があります)
注:
(1. データベース、テーブル、列の文字セットを変更します
)
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
(2. mysql 設定ファイル my.cnf を変更します (ウィンドウは my.ini)
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4'
(3. Java サーバーを使用している場合は、mysql 接続バージョンをアップグレードするか確認します) 5.1.13 より高い、そうでない場合はまだ utf8mb4 を試すことができません
(4. サーバー側の DB 設定ファイル
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE jdbc.username=root jdbc.password=password
mysql-connector をアップグレードすると、characterEncoding=utf8 が自動的に認識されますutf8mb4 (オリジナルの utf8 と互換性あり)、および
autoReconnection (データベース接続が異常に中断された場合、自動的に再接続しますか? デフォルトは false) を追加することを強くお勧めします。この属性を無視すると、キャッシュが発生する可能性があります。 DB の設定が読み込まれていないため、utf8mb4 文字セットを試行できません
2. アプリケーション層から解決します
URLEncoder.encode(nickName, "utf-8");
データベースから取り出して表示の準備ができたらデコードします。
URLDecoder.decode(nickname, "utf-8");
アプリケーション層から問題を解決するときは、オブジェクトゲッターで直接エンコードしないことをお勧めしますsetter メソッドは、オブジェクトを配置するときにニックネームをエンコードするため、これを参照すると、オブジェクトから getter メソッドを呼び出すことと同じになります。これは、上記の問題が引き続き発生することを意味します。
mysql で保存された絵文字表現 (WeChat 開発ユーザーのニックネーム) については、PHP 中国語 Web サイトを参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









