先日、私は愚かな状況に遭遇しました。 1つのWebプロジェクトを立ち上げ、すべてが機能し、コードが記述および補足され、データベースがいっぱいになりました。 開発はテストホストで行われ、変更がサーバーにアップロードされます。チェック全体はサイト自体に入り、すべてをテストすることになります。 突然、文字 "w"がサイトに表示されず、代わりに2つの無意味な文字であることがわかりました。
「そして」という文字でも同じことが起こりました。 すぐにサーバー上の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');
以上です。 このスクリプトは必要なことを正確に行い、数分で記述されたため、これをより柔軟で最適化できることに驚くかもしれません。
このスクリプトが誰かに役立つことを願っています。
ご清聴ありがとうございました。
UPD:
助けてくれた
edogに感謝し、不要なデータベースクエリを削除しました。