web-dev-qa-db-ja.com

変な文字 - すべてがUTF-8であるにもかかわらず

このスレッドが閉じられた理由はわかりません しかし、これは多くの人を悩ます同じ問題です。

私のWP設定はすべて順調です。

//define('DB_CHARSET', 'utf8');
//define('DB_CHARSET', 'utf8_unicode_ci');
//define('DB_COLLATE', '');

私もそれらを一つずつ有効にしてみました。どれもうまくいきませんでした。

投稿を保存すると、アポストロフィとスペースの代わりに変な文字が表示されます。これは、コンテンツを手動で入力した場合でも、または

私はいくつかのプラグインを試しました。

  1. UTF-8サニタイズ
  2. WPをUTF-8に変換

..等。

どれも機能しません。問題は解決しません。

データベースの文字セットと照合順序もMYSQLで変更しました。スクリーンショット

MySQL tables/columns are all utf-8

これは、貼り付けてコンテンツを入力したときのスクリーンショットです。

Text is fine when entering it in the WP UI

しかし、保存するとすぐに、テキストは文字化けした文字で置き換えられます。

Annoying garbled characters

ほかに何か?

私はMySQL DB全体をダンプしてから、TRコマンドを介して古い非UTF-8文字をすべて削除するという厳密な説明を行いました。

tr -cd '\11\12\15\40-\176' < file-with-binary-chars > clean-file

file-with-binary-charsはMySQLのダンプです。それから私はテーブルを元に戻した。

私のMySQLの設定はすべてutf8です:

[client]
default-character-set=utf8

[mysqld]
character-set-client=utf8
collation-server=utf8_unicode_ci
character-set-server=utf8

私のブラウザはChromeです。エンコードはUTF-8です(表示メニュー内)。

他に何ができますか?すべてのプラグインファイルも同様にutf-8にする必要がありますか?

ちなみに、このブログはWordpressのブログの1つです。 MySQL 5.6.17の同じインストールを使用する同じサーバー上の他の新しいWordpressインストールがありますが、それらはそのような問題を抱えていません。私の推測では、これが以前のブログであることはかなり前に入力されたテキストとは異なる可能性があります。

入力やポインタをありがとう!

4
PKHunter

これは通常、MS Word情報をWordPressコンテンツエディタにコピー/ペーストしているときに発生します。 WordPressは wptexturize() という名前の関数を介して "Smart Quotes"と呼ばれるものを使用します。

理想的な解決策

理想的な解決策は、コンテンツを見直して、キーボードを使用してすべての一重引用符/二重引用符を置き換えることです。

しかし、あなたが大量のコピー/ペーストで作業しているならば、これは実行可能でないかもしれません。

wptexturize()フィルタを無効にする

もう1つのオプションは、wptexturize()フィルターの実行を無効にすることです。これはあなたの子テーマのfunctions.phpファイルに次のコードを入れることで達成できます。

remove_filter('the_content', 'wptexturize');

コメントや抜粋からフィルタを削除することもできます。

remove_filter('comment_text', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');

またはタイトルの場合:

remove_filter ('single_post_title', 'wptexturize');
remove_filter ('the_title', 'wptexturize');
remove_filter ('wp_title', 'wptexturize');

クリーンデータベース

データベースに「変な」文字を既に保存している既存のコンテンツの場合。 PHPMyAdminから次のクエリを実行してデータベースをクリーンアップする必要があるかもしれません(必ずデータベースのバックアップを最初に取ってください)。

UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');

プラグイン

それはWordPressです。 wptexturize()フィルタの管理を手助けするためにいつでもプラグインを使うことができます。 このリスト を見て、どれがあなたに合っているか確かめてください。

6
josh

私は同じ問題に直面していました。

私はあなたと同じようにすべてを試みました、そして最後に私はもう一つのことを試みました。

DB_CHARSETファイルのwp-configlatin1に変更しました。

そしてうまくいった:/

define('DB_CHARSET', 'latin1');
define('DB_COLLATE', 'utf8mb4_general_ci');
2
vs_lala

以下は私のためにそれを修正した、それで共有するためにここに投稿する。私が提案したSQLの更新を実行したにもかかわらず、私は「もっと読む」リンクの前にまだ変なシンボルを得ていました。

私は全くショックを受けています。何時間もの試行錯誤の後、ようやく下の "Settings"、次に "Readings"オプションが見つかりました: "ページとフィードのエンコーディング"。 UTF-7からUTF-8に変更した後、すべてがまた良く見えます。

enter image description here 

さらに奇妙なことに、それをUTF-8に変更した後、オプションはページから消えます。 WordPressサイト によると、このオプションはリリース3.5から削除されました。

1
NealWalters

この問題は、プラグインと直接のFTPアップロードによって引き起こされる可能性があります。

詳細はこちら:

http://iiiji.com/wordpress-appearing-weird-characterscode/ /

0
Dennis Cho