2011-12-29 74 views
2

我有原始文本:ferhat göçer,我想显示它像ferhat göçer。我尝试了很多东西,但都没有工作。如何在PHP中显示来自UTF-8字符串的正确字符?

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

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

我试着iconvutf8_deconde和所有其他一堆功能,仍然没有运气。

我应该如何显示这些怪异字符的正确符号?我在数据库中有这些数据。

+1

也许问题出在你的数据库:在编码你的数据库设置为utf-8? – Adonais 2011-12-29 22:12:11

+1

首先在浏览器中加载页面,然后检查浏览器认为编码是什么。发布这个作为你的问题的附录。 – 2011-12-29 22:12:56

+0

如果将utf-8编码的'ferhatgöçer'从latin-1转换为utf-8,就会得到'ferhatgâo§er''。可能在某些时候,错误地认为该文本是拉丁文编码的。然后'iconv -f UTF-8 -t LATIN1'会给你正确的utf-8。 – 2011-12-30 01:43:43

回答

1

utf8_decode通常会做你想做的,因为你的字符串的内容是一些东西,一直UTF-8编码的两倍:(see example

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

然而,这种假设:

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

而且,记住,任何插入before /更新到数据库,下面就防止再次发生的问题:

mysql_query("SET NAMES 'utf8'"); 
1

它也可能与服务器有关。无论您通过PHP或页面的<header>设置什么,某些提供商都将其apache2配置为强制进行ISO-XXXX编码。

编辑:你可以通过检查pageload给你的实际标题来验证。无论是与浏览器的工具,如检查 - >在Chrome,Firebug的网络面板或网站,如http://www.webconfs.com/http-header-check.php

相关问题