「そして」という文字でも同じことが起こりました。 すぐにサーバー上のDBMSにアクセスして、キリル文字の代わりに...固体の「詐欺師」を確認します。 しかし、ラテン語は普通に書かれています。
もちろん、誰もがエンコードの問題について考えていましたが、もちろんそうです。 詳細を見る...テーブルのエンコーディングはUTF-8、必要な列のエンコーディングはUTF-8、ページヘッダーのエンコーディングはUTF-8、ブラウザのエンコーディングはUTF-8です。 そしてもちろん、中間リンクは失敗しました、接続エンコーディングはcp1251です。 そして、すべては、テストおよび運用データベースサーバー設定のIDを検証しなかったからです。 愚かな間違いですが、データベース内のデータはすでにいっぱいであり、何らかの形でそれを返す必要があります。 可能なすべてのことを行った後、いくつかの興味深いsqlクエリ、メモ帳を使用したダンプ内のエンコーディングのシャーマニズムを持つメソッド、エラーなしで動作する1つのphpスクリプトが同じヒエログリフを返しました。 何かが助けにならず、何かが単に合わなかった。
私の決定は平凡ですが、ネットワークのオープンスペースで同様の決定は見つかりませんでした。
必要なテーブルを目的の形式に転送する小さなphpスクリプトを作成します。
<?php define('BD_HOST','localhost'); define('BD_PASS','password'); define('BD_LOGIN','login'); // define('BD_FROM','bd1'); // define('BD_IN','bd2'); // $tables = array ( 'table1', 'table2', 'table3', 'table4', 'table5'); // , , ( , ) foreach ($tables as $table) { mysql_connect(BD_HOST,BD_LOGIN,BD_PASS); mysql_select_db(BD_FROM); $query_select_from = "SELECT * FROM $table;"; $result = mysql_query($query_select_from); mysql_close(); // mysql_connect(BD_HOST,BD_LOGIN,BD_PASS); mysql_select_db(BD_IN); mysql_query("set names utf8"); // , , while ($t = mysql_fetch_assoc($result)) { $values = ''; $f = false; foreach($t as $val) { $p = ($f)?',':''; $f = true; $add = (is_int($val))?"$val":"'$val'"; $values.= "$p $add"; }; $insert_in = "INSERT $table VALUES($values)"; mysql_query($insert_in); // , }; mysql_close(); // , . }; ?>
以上です。 このスクリプトは必要なことを正確に行い、数分で記述されたため、これをより柔軟で最適化できることに驚くかもしれません。
このスクリプトが誰かに役立つことを願っています。
ご清聴ありがとうございました。
UPD:
助けてくれたedogに感謝し、不要なデータベースクエリを削除しました。