如何在PHP中显示来自UTF-8字符串的正确字符?


How do I display the correct character from UTF-8 string in PHP?

我有原始文本:ferhat göçer,我想像ferhat göçer一样显示它。我试了很多方法,但都不起作用。

所有页面都有以下标题和meta:

header('content-type: text/html; charset=utf-8');
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我已经尝试了iconv, utf8_deconde和所有其他一堆函数,仍然没有运气。

如何为这些奇怪的字符显示正确的符号?我在数据库中有这个数据

utf8_decode通常会做你想要的,因为你的字符串的内容是已经被utf -8编码了两次的东西:

var_dump(utf8_decode('ferhat göçer'));

(见例子。)但是,这假定了以下条件:

  1. 文件保存为UTF-8格式
  2. 你的头被正确地服务。(在浏览器中检查HTML/HTTP头)
  3. 你的PHP内部编码/默认字符集设置为UTF-8。

另外,请记住,在对数据库进行任何插入/更新之前,以下操作将防止问题再次发生:

mysql_query("SET NAMES 'utf8'");

也可能与服务器有关。一些提供程序将其apache2配置为强制ISO-XXXX编码,而不管您通过PHP或在页面的<header>中设置什么。

edit:您可以通过检查页面加载给您的实际标头来验证这一点。无论是使用浏览器工具,如Chrome中的Inspect -> Network面板,Firebug或网站,如http://www.webconfs.com/http-header-check.php