ホームページ WeChat アプレット WeChatの開発 mysql は絵文字表現 (WeChat 開発ユーザーのニックネーム..) を保存します。

mysql は絵文字表現 (WeChat 開発ユーザーのニックネーム..) を保存します。

Feb 15, 2017 am 10:47 AM

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)
ログイン後にコピー

上記のエラーが報告される場合は、Java コードのフィールドがデータベースのフィールド タイプまたはエンコーディングと一致していない可能性があります。この場合は、形式またはエンコーディングを統一してください。

ここでは主にデータベースに絵文字画像を挿入する際のエラーと解決策を紹介します


mysqlデータベースを使用する場合、文字セットがUTF-8でJavaサーバー上で絵文字表現を保存する場合、上記のようになります。スローされる異常 (たとえば、WeChat 開発ではユーザーのニックネームが取得され、一部のユーザーのニックネームでは絵文字画像が使用されます)

これは、UTF-8 エンコーディングが 2、3、または 4 である可能性があるため、文字セットがサポートされていないための例外です。文字セクションでは、絵文字表現が 4 バイト、mysql の UTF-8 エンコーディングが 3 バイトまでであるため、データを挿入できません。

解決策:
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 サイトを参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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