奇怪的字符-尽管一切都是UTF-8

时间:2014-08-03 作者:PKHunter

不知道为什么this thread was closed, 但许多人也面临同样的问题。

我的所有WP配置设置都按顺序进行:

//define(\'DB_CHARSET\', \'utf8\');
//define(\'DB_CHARSET\', \'utf8_unicode_ci\');
//define(\'DB_COLLATE\', \'\');
我甚至试着一个接一个地启用它们。没有起作用。

当我保存帖子时,奇怪的字符会出现在撇号和空格的位置。无论是手动键入内容还是

我尝试了一些插件。

UTF-8消毒将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数据库的繁琐过程,然后通过TR命令删除所有旧的非utf8字符。

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博客之一。同一台服务器上还有其他更新的Wordpress安装,使用的是相同的MySQL 5.6.17安装,但它们没有这样的问题。我的猜测是,这是一个较老的博客,可能在很久以前输入的文本中有一些变化,但坦率地说,在完成了上述所有操作之后,我真的不知道我还能做什么。

感谢您的任何输入或提示!

6 个回复
SO网友:josh

这通常是在将MS Word信息复制/粘贴到WordPress内容编辑器时引起的。WordPress通过一个名为wptexturize().

Ideal Solution

理想的解决方案是返回您的内容,并使用键盘替换所有单引号/双引号。

但是,如果您使用的是大量复制/粘贴,这可能不可行。

Disable wptexturize() Filter

另一个选项是禁用wptexturize() 过滤器停止运行;这可以通过在子主题函数中放置以下代码来实现。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\');

Clean Database

对于已经将“怪异”字符保存到数据库中的现有内容;您可能需要从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, \'…\', \'…\');

Plugins

好这是WordPress。您始终可以使用插件来帮助管理wptexturize() 滤器浏览一下This List, 看看是否适合你。

SO网友:vs_lala

我也面临着同样的问题。

我像你一样尝试了一切,最后我尝试了最后一件事。

更改了DB_CHARSET 在里面wp-config 文件收件人latin1.

事情成功了:/

define(\'DB_CHARSET\', \'latin1\');
define(\'DB_COLLATE\', \'utf8mb4_general_ci\');

SO网友:Deepak Rajpal

在另一种情况下,if you are using PHP Dom (loadHTML) 在某些地方,需要将HTML加载为UTF-8。我有fixed 信息发布人:

更换

@$dom->loadHTML($html);

@$dom->loadHTML(\'<?xml encoding="UTF-8">\' . $html);

SO网友:NealWalters

下面为我修复了它,所以张贴在这里分享。尽管我运行了建议的SQL更新,但在“阅读更多”链接之前,我仍然得到了有趣的符号。

我完全震惊了。经过数小时的尝试和测试,我终于找到了下面的“设置”和“阅读”选项:“页面和提要编码”。从UTF-7改为UTF-8后,一切看起来都很好。

enter image description here

更奇怪的是,将其更改为UTF-8后,该选项将从页面中消失。根据WordPress site, 此选项自3.5版起被删除。

SO网友:Dennis Cho

插件和直接FTP上传可能导致此问题。

详情如下:

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

SO网友:Hewe

在我的情况下,奇怪的字符没有写入数据库。检查原始SQL是否也显示了不正确的字符。如果在数据库中看到常规撇号,请在wp-config.php:

// define(\'DB_CHARSET\', \'utf8\');
// define(\'DB_COLLATE\', \'\');
我马上就修好了。

"E;此字符编码问题可能在数据库升级后发生Link

结束

相关推荐

Encoding Method for URLs?

WordPress是否有一种编码URL的方法或API,类似于在URL中使用标题时生成部分URL的方式?我正在编写一个生成URL的插件,并希望使用与其他所有插件相同的方法。例如,我在标题中键入“这是我的博客文章”,然后生成“这是我的博客文章”。