[解決済み] JDBC経由でMySQLにUTF-8を挿入しようとすると、"不正な文字列値 "と表示される?
質問内容
私の接続はこのように設定されています。
Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password);
そして、テーブルに行を追加しようとすると、以下のエラーが発生します。
Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...' for column 'content' at row 1
数千件のレコードを挿入していますが、テキストに \xF0 が含まれていると必ずこのエラーが発生します(つまり、不正な文字列値は必ず \xF0 で始まる)。
列の照合順序はutf8_general_ciです。
何が問題なのでしょうか?
解決方法は?
MySQLの
utf8
は、UTF-8 で 3 バイトで表現できる Unicode 文字のみを許可しています。ここでは、4バイトを必要とする文字があります。\xF0 ╱ 90 ╱ 8D╱ 83 (
u+10343 ゴシック文字サウイル
).
MySQL 5.5 以降の場合、カラムのエンコーディングは
utf8
から
utf8mb4
. このエンコーディングでは、UTF-8で4バイトを占有する文字を格納することができます。
また、サーバーのプロパティである
character_set_server
から
utf8mb4
をMySQLの設定ファイルに追加してください。どうやら
Connector/J のデフォルトは 3 バイトの Unicode で、それ以外の場合は
:
たとえば、Connector/J で 4 バイトの UTF-8 文字セットを使用するには、MySQL サーバを次のように設定します。
character_set_server=utf8mb4
のままにしておいてcharacterEncoding
を、Connector/J 接続文字列から削除します。Connector/J は UTF-8 設定を自動検出します。
関連
-
[解決済み】MAMPのmysqlサーバーが起動しない。mysqlのプロセスが起動していない
-
[解決済み] MySQLで「一意のテーブル/エイリアスでない」場合
-
[解決済み] MySQLで日付のみのパラメータを使用してタイムスタンプの日付を比較する方法は?
-
[解決済み] ローカルマシンからリモートDBをmysqldumpする方法
-
[解決済み] whereステートメントによるmysqlの一括更新
-
[解決済み] mysqlのテーブルからユニークキーを削除する方法
-
[解決済み] MySQLの グループ関数の無効な使用
-
[解決済み] MySQLで "no "キーワードは何に使うのですか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み】MySQLデータベースに絵文字を格納する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】mysqlが内部または外部のコマンド、操作可能なプログラムまたはバッチとして認識されない。
-
[解決済み】カラムのデータが切り捨てられた?
-
[解決済み] WHEREで集計関数は使用できません "というエラーを回避する方法
-
[解決済み] エラーコードです。1215. 外部キー制約を追加できません (外部キー)
-
[解決済み] mysqlのテーブルからユニークキーを削除する方法
-
[解決済み] SQLSTATE[22003]: 数値の範囲外: 1264 範囲外の値です。
-
[解決済み] UTF8エンコーディングでExcelからCSVに変換する【終了しました
-
[解決済み] MySQLデータベースのキャラクタセットと照合順序をすべてUTF-8に変換する方法は?
-
[解決済み】キャラクタセットと照合順序の正確な意味は何ですか?
-
[解決済み] Incorrect string value "エラーを修正する方法は?