0

すべてのテーブルが「utf8_unicode_ci」として照合された Mysql データベースがあります。また、php を使用してデータベースに書き込んだすべてのデータは、utf8 でエンコードされていました。しかし、mysql 接続エンコーディングを utf8 に設定するのを忘れていたため、おそらくデフォルトで ISO-8859 に設定されていました。

長い間、これは問題ではありませんでした。phpMyAdmin などのツールでは特殊文字が正しく表示されませんでしたが、間違った接続エンコーディングを使用し続けている限り、php アプリケーションにロードするとデータは正しく表示されました。

しかし今、別のアプリケーションからデータベースを使用する必要があります。これは (正しく) 接続エンコーディングとして ISO-8859 を使用せず、壊れた特殊文字を取得します。

正しい接続エンコーディングを使用できるように、データベースを変換したいと考えています。

私はすでにこれを試しました: mysqlの間違った接続エンコーディング

しかし、私は私を助けません。解決策に最も近いのは「ut8_decode(utf8_decode($data))」でした。しかし、これは特殊文字で始まるフィールドを破壊します。

追加情報:

したがって、次のようなことが起こります。

  1. 私のアプリケーションは、いくつかの utf8 データをデータベースに送信します。

  2. Mysql はデータを取得しますが、(接続エンコーディングのために) utf8 ではないと判断し、'utf8_unicode_ci' 照合に適合するように変換します。

  3. 私のphpアプリケーションがデータベースからデータを読み取ると、mysqlは以前の変換を元に戻すように見えるので、私のphpアプリからはすべて正常に見えます。

4

0 に答える 0