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