2017-03-09 3 views
0

私のデータベースをutf-8に変換したい。私が今まで行っているUTF-8を読み取るようにサーバーを設定し、データベースは、このクエリを使用して変換されたもの:データベースをutf-8に変換しましたが、私の古いデータはまだwindows-1251にあります。それを変換する方法?

ALTER DATABASE database_name CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

は今、すべての新しい情報が見られ、壊れたものは今も元気です。問題は、古いデータが と見なされることです。これは、私の意見では、古いデータはwindows-1251で書かれているからです(少なくとも私は100%確信していないと思います)。

私はデータをダンプする必要があることが判明:その後、

mysqldump -uroot -p database -r utf8.dump 

し、それをインポートします。

mysql -uroot -p --default-character-set=utf8 database 
mysql> SET names 'utf8' 
mysql> SOURCE utf8.dump 

これは私がここから見たものである:https://makandracards.com/makandra/595-dumping-and-importing-from-to-mysql-in-an-utf-8-safe-way

問題があります私はどこでどのようにこれを行うのか全く分かりません。 私がアクセスできるのは、コントロールパネルをホストしているウェブにアクセスすることです。私はではありません。は私のコンピュータに何か設定しています。したがって、私はどのようにコマンドシェルにデータベースを接続するかわかりません。データをutf-8に変換するには、次のステップは必要ですか?このようなことをするのは私にとっては初めてのことなので詳細な説明はすばらしいものになります。

// MacとWindowsマシンがありますが、現時点ではLinuxはありません。

ありがとうございました!

+0

推奨読書:http://www.joelonsoftware.com/articles/Unicode.htmlとhttp://kunststube.net/encoding/ – spencer7593

+0

ALTERを実行しますDATABASE文は、データベースの*デフォルト*文字セットを変更します。既定の文字セットは、文字セットを指定せずに作成された* new *テーブルに適用されます。表のデフォルトのキャラクタ・セットは、表に作成された新しい列に適用されます。表には、キャラクタ・セットが指定されていません。 ALTER DATABASE文は、既存の表および列のキャラクタ・セットを変更しません。 – spencer7593

答えて

0

データベースの文字セットと照合順序は、任意の後に作成されたテーブルのデフォルトです。 の設定が列のデフォルトです。各表について

ので、この:

ALTER TABLE table_name CONVERT TO utf8mb4; 
関連する問題