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

データベース内のアクセントや奇妙な文字を処理する方法は?

    照合 テキストの並べ替えにのみ影響し、保存されているデータの実際の文字セットには影響しません。

    この構成をお勧めします:

    1. DB全体の文字セットを設定します のみなので、テーブルごとに個別に設定する必要はありません。文字セットは、DBからテーブル、列に継承されます。 utf8を使用する 文字セットとして。

    2. DB接続の文字セットを設定します 。データベースに接続した後、次のクエリを実行します。

      SET CHARACTER SET 'utf8'
      SET NAMES 'utf8'
      
    3. ページの文字セットを設定します 、HTTPヘッダーおよび/またはHTMLメタタグを使用します。これらの1つで十分です。 utf-8を使用する charsetとして 。

    これで十分です。

    スペイン語の文字列を適切に並べ替えるには、 collat​​ionを設定します。 データベース全体に対して。 utf8_spanish_ci 動作するはずです(ci 大文字と小文字を区別しないを意味します )。適切な照合がないと、アクセント付きのスペイン語の文字は常に最後に並べ替えられます。

    :以前に文字セットの構成が間違っていたために、テーブルにすでにあるデータの文字セットが壊れている可能性があります。このケースを除外するには、最初にDBクライアントを使用してチェックする必要があります。壊れている場合は、正しい文字セット構成でデータを再挿入するだけです。

    文字セット はどのように機能しますか データベースでの作業

    • オブジェクト 文字セットがある 属性。明示的に設定することも、継承することもできます(サーバー>データベース>テーブル>列)。したがって、データベース全体に設定するのが最適なオプションです

    • クライアント接続 文字セットもあります 属性であり、データを送信するエンコーディングをデータベースに通知します

    クライアント接続とターゲットオブジェクトの文字セットが異なる場合、データベースに送信するデータは、接続の文字セットからオブジェクトの文字セットに自動的に変換されます。

    たとえば、utf8のデータがある場合 、ただしクライアント接続 latin1に設定 、データベースはutf8を変換しようとするため、データを破壊します latin1のように 。



    1. MySQLサーバーシステム変数の新しい値を設定するための読み取り専用権限を変更する方法

    2. MySQLのutf8エンコーディングに適していない不正な文字を削除するにはどうすればよいですか?

    3. ストアドプロシージャが存在するかどうかを確認するにはどうすればよいですか?

    4. PDOでmysql_data_seekをどのように使用しますか?