1

このような質問がたくさんあったことは知っていますが、新しい質問を作成しています。私の観点では、それぞれの状況に固有のものだからです。

というわけで、マイページがUTF-8フォーマットで表示されます。データは、utf8_unicode_ci collation. 表示しているデータは文字列 -1  Bröllops-Festkläderです。

ここにはいくつかの Unicode 文字があり、正常に表示されるはずですが、そうではありません。私のページでは、これらは象形文字の集まりです。

さて、興味深い状況:

データベースで何が起こっているかを追跡するためにphpMyAdminを使用しています。Web サイトには、顧客データを含む CSV ドキュメントをインポートし、各顧客を個別に変更する機能があります。これらの文字を含む CSV ドキュメントをインポートすると、それらはデータベースに書き込まれ、phpMyAdmin で読み取り可能で、私のページでは読み取り不能になります。スクリプトを使用して顧客情報を変更し、それらの文字をブラウザーから入力すると、その逆になります。ページでは読み取り可能で、phpMyAdmin では読み取り可能ではないため、明らかにエンコーディングが異なります。私は正しい組み合わせを考え出すのに何年も費やしましたが、できませんでした.

更新: Deceze が以下のリンクを投稿しました。それをここにコピーして、より目立つようにします。これにより、同様の問題に直面している多くの人々が何時間も何日も節約できると確信しています - Web アプリでの Unicode Front to Back の処理

4

1 に答える 1

3

ここに関係することがいくつかあります。データベースのエンコーディングと html のエンコーディングに問題がなく、まだアーティファクトが表示される場合は、データベース接続が同じエンコーディングを使用していない可能性が高く、データの破損につながっています。SET NAMES UTF8手動で接続する場合は、データベースにアクセスした後、最初にクエリを実行することで、utf エンコーディングを簡単に強制できconnect()ます。これは、接続ごとに 1 回行うだけで十分です。

編集: ただし、1 つの重要な注意事項 - データを DB に配置する方法によっては、データベースのコンテンツを修正する必要がある場合があります。切断された接続を介してデータを配置すると破損する可能性があるためです。そのため、誰かが同じ問題に直面している場合 - すべてを設定したら、新しいデータ セットを確認していることを確認してください。

于 2012-08-27T15:04:43.770 に答える