これが最初に発生したのはいつかわかりません。
私は新しい直送アフィリエイトウェブサイトを持っており、卸売業者から製品カタログのエクスポートされたコピーを受け取ります。これをフォーマットしてPrestashop1.4.4にインポートします。
Webサイトのフロントエンドには、製品テキスト内に奇妙な文字の組み合わせが含まれています:Ã、Ã、¢、â、など。これらは、、-:などの一般的な文字の代わりに表示されます。
これらの文字は、ps_product_langのような製品固有のテーブルだけでなく、データベーステーブルの約40%に存在します。
別のWebサイトのスレッドでは、データベース接続文字列が誤った文字エンコードタイプを使用している場合に、これと同じ問題が発生すると述べています。
/config/setting.incには、文字エンコード文字列は記載されていません。MySQLエンジンのみがInnoDBに設定されており、PHPMyAdminに表示されるものと一致します。
ps_product_langをエクスポートし、これらの文字のすべてのインスタンスを正しい文字に置き換え、CSVファイルをUTF-8形式で保存し、言語としてUTF-8を指定してPHPMyAdminを使用して再インポートしました。
ただし、PHPMyAdminで新しい検索を行った後、ps_product_langにこれらの不正な文字のインスタンスが最初の約10倍になりました。
問題がデータベース接続文字列で正しい言語属性を指定するのと同じくらい単純な場合、これをどこで/どのように設定し、何を設定しますか?
ちなみに、このスレッドで言及されているPHPMyAdminでこのコマンドを実行しようとしましたが、問題は残ります。
SET NAMES utf8
更新:PHPMyAdminによると:
MySQL文字セット:UTF-8 Unicode(utf8)
これは、前回のインポートファイルで使用したのと同じ文字セットであり、文字の破損がさらに発生しました。インポートプロセス中に、インポートファイルの文字セットとしてUTF-8が指定されました。
UPDATE2
サンプルは次のとおりです。
人々は本当に束縛されていない生活を送っています。オンラインで映画を購入およびレンタルし、ソフトウェアをダウンロードし、ファイルを共有および保存します。ウェブ。
UPDATE3
PHPMyAdminでSQLコマンドを実行して、文字セットを表示しました。
- character_set_client utf8
- character_set_connection utf8
- character_set_database latin1
- character_set_filesystemバイナリ
- character_set_results utf8
- character_set_server latin1
- character_set_system utf8
したがって、おそらく私のデータベースをUTF-8に変換(または削除して再作成)する必要があります。MySQLサーバーがlatin1の場合、これは問題を引き起こす可能性がありますか?
MySQLは、提供するコンテンツの翻訳をUTF8として処理できますが、それをlatin1として保存できますか?UTF8はlatin1のスーパーセットであるため、それが可能だとは思いません。私のウェブホスティングサポートは48時間以内に返信していません。彼らには難しすぎるかもしれません。