質問マークはこれから来ます:
- クライアントには有効な文字(良い)があり、
-
SET NAMESクライアントが持っているエンコーディングに同意します(良い)が、 - ターゲット列の
CHARACTER SET意図した文字が含まれていません(悪い)。
例:
-
latin1西ヨーロッパの文字のみを処理します。東ヨーロッパのキャラクターやアジアのキャラクターの初期化を入れようとすると、適合しません。 -
latin2およびcp1250チェコ語を処理できるため、それらの間の変換はほとんど問題ありませんが、どちらかとlatin1の間では変換できません。 -
utf8mb4utf8のスーパーセットです .utf8文字をutf8mb4に入れることは問題ありませんが、逆にすると「?」になります。場合によっては。
'?'に変換された文字テーブルから復元できません。
将来のINSERTsを修正する方法 ?
-
utf8mb4の使用 テーブルの列は、おそらくすべての場合に機能します。 - それ以外の場合は、
CHARACTER SETを選択します クライアントデータと合理的に一致するテーブル列の場合。
一部の文字のみが?である理由 (š?ž?? )はšž latin1には存在しますが、他のものは存在しません。
結論:CHARACTER SETを変更します テーブル定義内。