Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress使用UTF-8,我网站的其余部分使用ISO-8859-1字符编码_Php_Wordpress - Fatal编程技术网

Php Wordpress使用UTF-8,我网站的其余部分使用ISO-8859-1字符编码

Php Wordpress使用UTF-8,我网站的其余部分使用ISO-8859-1字符编码,php,wordpress,Php,Wordpress,我们客户的网站使用: ISO-8859-1-在其主要站点上 UTF-8在Wordpress博客的“/blog/”目录中,使用使用UTF-8编码的模板 这很好,但在我们的主站点上,我们还使用Wordpress API函数,如get_the_extract()从博客获取最新新闻,并将其显示在我们的主页上。问题是,一些MS Word字符似乎是特殊字符,在博客上显示良好,但在我们的主页上显示如下: “关键品牌”测试 我尝试将元字符编码更改为UTF-8,但没有任何帮助。相反,以下PHP代码可以工作: ht

我们客户的网站使用: ISO-8859-1-在其主要站点上 UTF-8在Wordpress博客的“/blog/”目录中,使用使用UTF-8编码的模板

这很好,但在我们的主站点上,我们还使用Wordpress API函数,如get_the_extract()从博客获取最新新闻,并将其显示在我们的主页上。问题是,一些MS Word字符似乎是特殊字符,在博客上显示良好,但在我们的主页上显示如下:

“关键品牌”测试

我尝试将元字符编码更改为UTF-8,但没有任何帮助。相反,以下PHP代码可以工作:

htmlentities(_文本除外,1,“UTF-8”,0)

尽管我是从UTF-8编码的,但它在我的ISO-8859-1模板上工作得很好。我在字符编码方面不是很有经验,我会继续进行上面的修复,但我只想知道是否有人能解释为什么上面的工作以及为什么更改我的字符编码不起作用?字符本身是有效的(例如,Word中的-连字符和Word中生成的“引号”)

[更新]事实上,它并不好用。上面还将我的“阅读更多”链接转换为可读的标记-也就是说,HTML实际上已转换:(有什么办法可以解决这个问题吗

谢谢,
Rishi

htmlentities将非ASCII字符转换为HTML实体-
等,然后将正确解释这些实体,而不管客户希望的是拉丁文1还是utf8


mb\u convert\u编码($extract\u text,“ISO-8859-1”,“UTF-8”)
可能是您需要进行转换的。如果WP博客包含非拉丁字符,您当然可以。

您是否尝试使用
标题()更改字符编码
php功能也可以?您的服务器可能会将页面编码为iso-8859-1,并且仅更改meta并不总是有帮助。顺便说一句,如果您的网站是英文的,并且只使用基本字符,那么您可以轻松地将其设置为UTF-8。htmlentities不会在字符集之间转换。您可以使用mb\u convert\u encoding()不幸的是,它不起作用,我只是尝试了:a)header('Content-Type:text/html;charset=utf-8');--这并不能解决问题,似乎也不会改变有问题的字符的任何内容。b)对于mb\u convert\u编码,请参阅我下面的评论。您可以使用
iconv
来转换字符(您需要设置//translat或//IGNORE,因为utf-8包含的字符比iso-8859-1多得多)。谢谢,我刚刚尝试了这个:打印(mb_convert_编码($extract_text,“utf-8”,“iso-8859-1”));---不幸的是,它不起作用。例如,一个德国欧元符号是Zurück,在我的代码中显示为Zurück。在尝试mbÃu convert_编码后,它显示为Zurück对不起,我想我得到了mbÃu convert_编码错误的参数。尝试将它们颠倒过来(我会编辑答案),这很有效!非常感谢:)我想知道为什么使用header更改我的字符集不起作用。也许我应该更改meta标记并强制使用header,然后再试一次,然后更新此票证,但是mb_convert_编码确实起作用,所以这很好!如果响应头中的字符集和meta标记不一致,那么浏览器可能会举手,snort depr然后猜测。并且可能更可能猜测iso-8859-1(不会产生解码错误)或信任meta标记(内容作者可以对其进行更多控制)。