2011-12-29 73 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

相關問題