0

サーバー上のデータベースを頻繁に更新しており、コマンドラインから次の行を実行します。

mysqldump -u root --password=mypass mydb|mysql -h mysite.cc -u remotusr --password=remotpsw remotdb

問題は、途中でUTF文字が失われることです。

utf文字をcmdに保持するにはどうすればよいですか、またはこれを行うためのより良い方法は何ですか?

4

1 に答える 1

1

(回答へのアップグレード)

以下に記載されているようにmysqldump—データベースバックアッププログラム

[ deletia ]

  • --set-charset

    出力に追加します。このオプションはデフォルトで有効になっています。ステートメントを抑制するには、を使用します。SET NAMES default_character_setSET NAMES--skip-set-charset

したがって、これらのデフォルトを上書きする設定がオプションファイルにない限り(設定が無効になるように指定できます--no-defaults)、からの出力は、Unicode文字を失うことなくmysqldump別のセッションにリダイレクトできる以上のものである必要があります。mysql

代わりに、新しいデータベースからデータを取得して表示するときに、より小さな文字セットへの変換が行われているように見えます。この目的でPHPのオリジナルのMySQLAPIを使用しているため、マニュアルの章(下記)の概要に警告がありますが、を使用mysql_set_charset()して接続文字セットを設定する必要があります。

この拡張機能は、新しいコードの記述にはお勧めしません。代わりに、mysqliまたはPDO_MySQL拡張機能のいずれかを使用する必要があります。MySQL APIを選択する際の詳細については、MySQLAPIの概要も参照してください。

于 2012-09-04T17:30:08.957 に答える