2011-07-17 3 views
1

私は現在データベースを持っており、ほとんどのテーブルとフィールドはlatin1_swedish_ciとして保存されています。複数の言語をサポートするmysqlデータベースの変換

私の質問は以下のとおりです。

  1. 私はテーブルとそのフィールドにutf8_unicode_ci内を使用する必要がありますか?
  2. テーブルとフィールドの照合の違いは何ですか?
  3. すべてのフィールド/テーブルをutf8_unicode_ciに大量に変更することはできますか? (正しい照合がある場合)
  4. フィールド/テーブルでデータが失われることはありますか?

utf8を使用する理由は、中国語やロシア語の文字をデータベースに格納する必要があるためです。

+2

UTF-8を使用する理由を思いつく必要はありません。 –

答えて

2
  1. 私はそれに行きます。 utf8には複数の言語を扱うときに行かない理由はほとんどありません。
  2. 列の文字セットと照合順序が個々の列定義で指定されていない場合は、表の文字セットと照合が列定義のデフォルト値として使用されます。
  3. フィールドに個別の照合/文字セットがない場合は、すべてのテーブルと問題ALTER TABLE tablename CONVERT TO CHARSET utf8;をループする単純なスクリプトを作成できます。フィールドにカスタム文字セット/照合がある場合は、MODIFY COLUMNステートメントを発行する必要があります。変換後にinformation_schema.columnsテーブルのクエリを簡単に識別できます。
  4. はい、データをutf8で表現できない場合(現在の照合ではそうは思われません)、データが破損する可能性があります。また、実際にutf8ではない列にutf8テキストを格納した場合、それらのフィールドを変換すると、utf8エンコーディングのようなものになります。これは、きれいに扱いにくいものです。あなたが誤ってutf8をストーリーするために使用される列を知っている場合は、変換/二重エンコーディングを防ぐために、それをbin &に変換してからutf8に変換することができます。
+0

ありがとう、私はそれが良いことだと思います。 –

関連する問題