发现WordPress中经常会把一些西文标点做自动替换:引号变成中文引号、”…”变成”…”、连续减号变成长横线…..及其它很多东西都强行转换成了Unicode里的CJK符号,也就是中文标点。在blog标题、内容、评论内容中都存在这种替换,有时候觉得很不舒服,想把这种替换去掉。

简单做了一下试验,和主题样式无关,和汉化中文包无关,数据库里的原始数据也没有变化,应该是WordPress程序本身的问题。在Rainux的blog中查到了解决方案,但原文说的还是WordPress 1.5的版本,2.3版源程序做过改动,在类似的位置也很容易找到。

修改位于wp-includes/formatting.php的wptexturize()函数,具体的替换规则存在 ($static_characters, $static_replacements)和($dynamic_characters, $dynamic_replacements)两对数组中,有兴趣的话可以更改其中内容。如果要全部取消替换,只需注释掉下面两行的内容。

Line 29 - 34:

if (isset($curl{0}) && '<' != $curl{0} && $next) { // If it's not a tag
// static strings
//$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
//$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
}

在Microsoft Word中写东西时遇到过类似的替换,当时还以为是中文版所独有的;如今在发现全球的WordPress中都应用这种替换。有些困惑,难道老外也用中文标点的?把这种替换后的文字另存为他们自己的ANSI格式时,会不会出现乱码?