sql >> データベース >  >> RDS >> Mysql

Java Server Pages-MySqlに挿入するときの照合?

    質問マークはこれから来ます:

    • クライアントには有効な文字(良い)があり、
    • SET NAMES クライアントが持っているエンコーディングに同意します(良い)が、
    • ターゲット列のCHARACTER SET 意図した文字が含まれていません(悪い)。

    例:

    • latin1 西ヨーロッパの文字のみを処理します。東ヨーロッパのキャラクターやアジアのキャラクターの初期化を入れようとすると、適合しません。
    • latin2 およびcp1250 チェコ語を処理できるため、それらの間の変換はほとんど問題ありませんが、どちらかとlatin1の間では変換できません。
    • utf8mb4 utf8のスーパーセットです .utf8文字をutf8mb4に入れることは問題ありませんが、逆にすると「?」になります。場合によっては。

    '?'に変換された文字テーブルから復元できません。

    将来のINSERTsを修正する方法 ?

    • utf8mb4の使用 テーブルの列は、おそらくすべての場合に機能します。
    • それ以外の場合は、CHARACTER SETを選択します クライアントデータと合理的に一致するテーブル列の場合。

    一部の文字のみが?である理由 (š?ž?? )はšž latin1には存在しますが、他のものは存在しません。

    結論:CHARACTER SETを変更します テーブル定義内。



    1. m:n関係のSQL SELECT

    2. オランダアクセス開発者の日2019–9月14日

    3. PHPでmysql_*関数を使用すべきではないのはなぜですか?

    4. MySQLのコミットとトランザクション